Mosquitto:以本地模式启动

问题描述 投票:0回答:6

我有一个虚拟机,应该是宿主机,可以接收和发送数据。第一张图片是我在主机上遇到的错误(我试图从中发送数据)。第二张图是我虚拟机上的mosquitto日志。此外,我使用的是默认配置,据我所知,这不会导致这些问题,至少从我从其他示例中看到的情况来看是这样。我对所有这些的工作原理知之甚少,因此不胜感激。

我在主机上尝试过的:

  1. 禁用 Windows defender
  2. 为“mosquitto.exe”添加防火墙规则
  3. 在 linux 机器上安装 mosquitto

First error

Second error

Netstat info

networking mqtt iot mosquitto
6个回答
25
投票

从 Mosquitto 版本 2.0.0 的发布开始(您正在运行 v2.0.2),默认配置将仅绑定到

localhost
作为向更安全的默认姿势的移动。

如果您希望能够从其他机器访问代理,您需要显式编辑配置文件以添加绑定到外部 IP 地址(或 0.0.0.0)的新

listener
或添加
bind
默认侦听器的条目。

默认情况下,它也只允许来自本地主机的匿名连接(没有用户名/密码),以允许来自远程添加的匿名:

allow_anonymous true
listener 1883

可以在 2.0 发行说明中找到更多详细信息这里


15
投票

你必须和

一起跑
mosquitto -c mosquitto.conf

mosquitto.conf,存在于与执行文件相同的文件夹中(C:\Program Files\mosquitto 等),必须包含以下行。

listener 1883 ip_address_of_the_machine(192.168.1.1 etc.)

15
投票

默认情况下,Mosquitto 代理将只接受来自本地计算机(托管代理的服务器)上的客户端的连接。 因此,自定义配置需要与您的 Mosquitto 实例一起使用,以便接受来自远程客户端的连接。

  1. 在 Windows 机器上,以管理员身份运行文本编辑器并粘贴以下文本:
listener 1883
allow_anonymous true
  1. 这会在端口 1883 上创建一个侦听器并允许匿名连接。默认情况下,连接数是无限的。使用扩展名为“.conf”的文件名将文件保存到“C:\Program Files\Mosquitto”,例如“your_conf_file.conf”。

  2. 打开终端窗口并导航到 mosquitto 目录。运行以下命令:

mosquitto -v -c your_conf_file.conf

在哪里

-c : 指定代理配置文件。

-v :详细模式 - 启用所有日志记录类型。这会覆盖 配置文件中给出的任何日志记录选项。


3
投票

我发现我必须添加,不仅

bind_address ip_address
,而且还必须设置
allow_anonymous true
,设备才能成功连接到MQTT。当然我知道更好的选择是在每台设备上设置用户和密码。但这是在一切都在最低配置下实际工作之后的下一步。


2
投票

对于那些在 Mac 上使用带有自制软件的 mosquitto 的人。


将这两行添加到

/opt/homebrew/Cellar/mosquitto/2.0.15/etc/mosquitto/mosquitto.conf
解决了我的问题。

allow_anonymous true 
listener 1883

1
投票

您可以像这样使用包含的“no-auth”配置文件运行它:

mosquitto -c /mosquitto-no-auth.conf 

我在 docker 容器(使用 docker-compose 生成)中运行它时遇到了同样的问题。 在 docker-compose.yml 文件中,这是通过以下方式完成的:

command: mosquitto -c /mosquitto-no-auth.conf 
© www.soinside.com 2019 - 2024. All rights reserved.