mosquitto-client获得拒绝连接

Luc*_*nzo 5 linux bash shell mqtt mosquitto

我想使用mosquitto库使用MQTT协议.

首先,我想做一些安装mosquitto-clients的测试

 sudo apt-get install mosquitto-clients
Run Code Online (Sandbox Code Playgroud)

该程序提供了两种"方法":

  • mosquitto_pub
  • mosquitto_sub

按照说明,我正在尝试提交新主题:

mosquitto_sub -d -t newtopic/test
Run Code Online (Sandbox Code Playgroud)

使用默认主机/端口[localhost/1883].

我获得:

Error: Connection refused
Run Code Online (Sandbox Code Playgroud)

过于通用,因为错误..任何人都可以帮助我吗?
可能是防火墙问题?在这种情况下,我该如何检查这是否是问题?

我正在使用linux ubuntu(3.8.0-42-generic#62~minision1-Ubuntu)

NB相同的行为写的用libmosquitto自定义程序.

T77*_*T77 28

只需编辑 Mosquitto 配置文件 ( /etc/mosquitto/conf.d/mosquitto.conf) 添加这些行...
allow_anonymous true
listener 1883 0.0.0.0

...然后重新启动 Mosquitto(无论是否作为服务)。
$ sudo service mosquitto restart
或者
$ mosquitto --verbose --config-file /etc/mosquitto/conf.d/mosquitto.conf

如此处所述,自 v1.7 (2022) 起allow_anonymous默认为false. 检查日志消息 ( /var/log/mosquitto/mosquitto.log) 也很有用。

--host最后,使用( ) 参数和主机 IP 地址(从或命令-h获取)运行 Mosquitto 订阅者/发布者。ifconfigip -color addr


use*_*368 13

其他答案都不适合我。就我而言,我已从 mosquitto 1.X 升级到 mosquitto 2.0,这需要将新配置添加到您的mosquitto.conf

listener 1883
Run Code Online (Sandbox Code Playgroud)

对于本地主机以外的客户端进行连接(即通过 Docker)

  • 对我来说,“正确答案”在某种程度上分布在这里的几个帖子中。我必须修改位于“/etc/mosquitto/mosquitto.conf”的配置文件并添加两行:“listener 1883”(这还不够)加上“allow_anonymous true”。并且不要忘记重新启动服务! (2认同)

ral*_*ght 9

mosquitto_pub/sub的默认主机:端口组合是localhost:1883.如果您没有在本地计算机上运行代理,那么当然它将无法连接.

解决方案是在本地计算机上运行代理,或者告诉实用程序在哪里连接.例如:

mosquitto_sub -t newtopic/test -h test.mosquitto.org
Run Code Online (Sandbox Code Playgroud)


Fra*_*fin 9

我遇到了同样的问题,对我来说是升级mosquittomqtt v5 支持:

$ mosquitto --version
mosquitto version 2.0.14
mosquitto is an MQTT v5.0/v3.1.1/v3.1 broker.
Run Code Online (Sandbox Code Playgroud)

但是,升级后的代理不再支持匿名连接:

$ mosquitto_pub -t mytopic -m "Hello World"
Connection error: Connection Refused: not authorised.
Error: The connection was refused.
Run Code Online (Sandbox Code Playgroud)

这可能是一个更好的默认值,但在实验时不太友好。要将代理配置为允许匿名连接:

$ cat /etc/mosquitto/conf.d/standard.conf
listener 1883
protocol mqtt
allow_anonymous true

$ sudo systemctl restart mosquitto.service
Run Code Online (Sandbox Code Playgroud)

然后,嘿,快点:

$ mosquitto_pub -t mytopic -m "Hello World"
Run Code Online (Sandbox Code Playgroud)


Jad*_*dam 6

对于未来的谷歌员工:

如上所述,您可以使用公共主机,但要启动本地mosquitto 代理,首先要确保mosquitto除了mosquitto_sub. 然后,您只需运行以下命令即可启动 mosquitto 代理:

mosquitto
Run Code Online (Sandbox Code Playgroud)