Ubuntu系统 MQTT Broker(Mosquitto)安装

Mosquitto 是一个开源的 MQTT(消息队列遥测传输)消息代理(broker),实现了 MQTT 协议 3.1 和 3.1.1 版本。它主要用于机器之间的消息通信(即物联网、M2M),特别是资源受限的设备和低带宽、不可靠网络的环境。

安装 Mosquitto

sudo apt update
sudo apt install mosquitto mosquitto-clients

安装完成以后Mosquitto会自动启动。

常用命令

# 启动Mosquitto
sudo systemctl start mosquitto

# 停止Mosquitto
sudo systemctl stop mosquitto

# 重启
sudo systemctl restart mosquitto

# 查看运行状态
sudo systemctl status mosquitto

# 设置开机启动
sudo systemctl enable mosquitto

# 禁用开机启动
sudo systemctl disable mosquitto

设置密码

创建密码文件

Mosquitto 提供了 mosquitto_passwd 工具来创建和管理密码文件。假设你想将用户的认证信息保存到 /etc/mosquitto/passwd 文件中:

sudo mosquitto_passwd -c /etc/mosquitto/passwd your_username
  • -c 参数表示创建一个新的密码文件(如果文件已存在,则会覆盖)。
  • your_username 是你的用户名,系统会提示你输入并确认密码。

 要添加更多用户,可以重复运行以下命令(不使用 -c,这样不会覆盖文件):

sudo mosquitto_passwd /etc/mosquitto/passwd another_username

配置 Mosquitto 使用密码文件

编辑 Mosquitto 的配置文件,一般位于 /etc/mosquitto/mosquitto.conf /etc/mosquitto/conf.d/default.conf。如果配置文件中没有 allow_anonymouspassword_file 相关配置项,可以添加以下内容:

# 禁用匿名访问
allow_anonymous false

# 指定密码文件
password_file /etc/mosquitto/passwd

保存配置文件后,重启 Mosquitto 服务使更改生效

sudo systemctl restart mosquitto

验证配置

你可以使用 Mosquitto 客户端来验证配置是否成功:

mosquitto_sub -h localhost -t test/topic -u your_username -P your_password

如果 Mosquitto 客户端能够成功连接并订阅主题 test/topic,则说明密码配置成功。

修改密码

方式一适合用户名不变,仅需更新密码的场景(更高效)。

方式二适合需要更换用户名或彻底移除旧凭证的场景。

方式一: 修改用户密码

​1、更新密码
使用 mosquitto_passwd 工具修改用户密码(需指定密码文件路径):

sudo mosquitto_passwd -U /etc/mosquitto/passwd
  • 输入命令后,按提示输入用户名新密码

若提示 -U 参数无效,改用以下命令(明文输入密码):

sudo mosquitto_passwd /etc/mosquitto/passwd 用户名

2、重启Mosquitto服务

sudo systemctl restart mosquitto

 方式二:删除用户后重新添加

1、删除旧用户

sudo mosquitto_passwd -D /etc/mosquitto/passwd 旧用户名

2、添加新用户

sudo mosquitto_passwd -b /etc/mosquitto/passwd 新用户名 新密码

3、重启Mosquitto服务

sudo systemctl restart mosquitto

修改端口

Mosquitto 默认端口1883,可以修改配置文件来自定义端口,Mosquitto 的主配置文件通常位于 /etc/mosquitto/mosquitto.conf/etc/mosquitto/conf.d/default.conf

在配置文件中查找 listener 相关的行。如果没有找到,可以手动添加。listener 指令用于指定 Mosquitto 的监听端口和绑定的网络接口。

# 监听端口,默认是 1883(非加密端口)
listener 1883

# 如果你想将其更改为其他端口(例如 1884)
listener 1884

# 监听的网络接口,默认监听所有接口
# 可以绑定到特定的 IP 地址(例如 127.0.0.1 仅允许本地连接)
# bind_address 127.0.0.1

要使新的配置生效,需要重启 Mosquitto 服务:

sudo systemctl restart mosquitto

你可以使用以下命令来验证 Mosquitto 是否在指定的端口上监听:

sudo netstat -tulnp | grep mosquitto

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值