Mosquitto 代理不进行身份验证,允许 mosquitto_pub 和 mosquitto_sub 匿名

物联网 蚊子
2021-06-13 07:38:36

这是我的配置文件 /etc/mosquitto/mosquitto.conf

# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log


include_dir /etc/mosquitto/conf.d

这是我使用创建的密码文件 sudo mosquitto_passwd -c /etc/mosquitto/password ananth

ananth:$6$pW5LFAJ/J0bzSHyz$XZsN5MwVc80JqITYvg8qtLxkjWWF2AEzYtoVJpXV9VbjXE5YSXFYC/umWXocj2ScQO/ztFsovgq8o/h00zQTSg==

这是我的本地配置文件 /etc/mosquitto/conf.d/auth.conf

allow_anonymous false
password_file /etc/mosquitto/password

当我运行mosquitto_sub -t test或 时mosquitto_pub -t test -m "Message"由于未验证Broker 不会拒绝连接

我也尝试使用重新启动mosquitto sudo service mosquitto restart

在 oracle 虚拟机上的 Ubuntu 16.04

我错过了什么吗?

2个回答

我在 Ubuntu 18.04 中也遇到了同样的问题。对我来说,停止和启动服务是有效的。代替:

sudo service mosquitto restart

我用了

sudo service mosquitto stop
sudo service mosquitto start

我能够看到在本地配置中所做更改的效果。

运行 status 命令sudo service mosquitto status会提供以下输出。

服务重启后

mosquitto.service - LSB: mosquitto MQTT v3.1 message broker
Loaded: loaded (/etc/init.d/mosquitto; generated)
Active: active (exited) since Wed 2020-03-11 17:36:27 IST; 4s ago
 Docs: man:systemd-sysv-generator(8)
Process: 3884 ExecStop=/etc/init.d/mosquitto stop (code=exited, status=0/SUCCE
Process: 3890 ExecStart=/etc/init.d/mosquitto start (code=exited, status=0/SUC

服务停止和启动后

mosquitto.service - LSB: mosquitto MQTT v3.1 message broker
Loaded: loaded (/etc/init.d/mosquitto; generated)
Active: active (running) since Wed 2020-03-11 17:36:41 IST; 2s ago
 Docs: man:systemd-sysv-generator(8)
Process: 3932 ExecStop=/etc/init.d/mosquitto stop (code=exited, status=0/SUCCE
Process: 3965 ExecStart=/etc/init.d/mosquitto start (code=exited, status=0/SUC
Tasks: 1 (limit: 4915)
CGroup: /system.slice/mosquitto.service
       └─3971 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

使用 restart 重新启动服务后,状态显示Active: active (exited),服务停止和启动后,状态显示Active: active (running)

因此,我认为使用restart重新启动服务不会重新加载配置文件,因此在本地配置中添加的任何内容(在您的情况下,它是/etc/mosquitto/conf.d/auth.conf)都没有任何影响。

当我在主配置中进行更改时也观察到这些,即,/etc/mosquitto/mosquitto.conf并使用了无效的服务重启。但是,服务停止并开始工作。

仍然不知道问题出在哪里,但我卸载了 mosquitto* 并重新安装了 mosquitto*

卸载

sudo apt-get remove --auto-remove mosquitto*
sudo apt-get purge --auto-remove mosquitto*

安装

sudo apt install mosquitto*

这对我有用(Ubuntu 16.04、Oracle Virtual Box(Windows 主机)、mosquitto 1.6.3 版和 MQTT v3.1.1 代理)