请帮助我了解如何发布到Mosquitto,该Mosquitto坐在需要密钥文件才能通过ssh连接到服务器的服务器上。

我正在尝试从其他网络中的计算机向Ubuntu 16.04服务器上的Mosquitto发布消息。

我已将问题缩小到服务器的连接配置设置。

要使用它,我需要传递密钥文件,例如:
ssh -i mykeyfile.pem user@ipaddress

问题是我无法从其他网络中的计算机访问Mosquitto,因为我不知道如何指定密钥文件。我检查了端口,它们是打开的。

这就是我试图发布的方式:

mosquitto_pub -h ip_address -p 1883 -t test -m "hello world"

使用相同的配置,我在不需要密钥文件ssh的其他服务器上进行了尝试。我设法发布了一条消息。这就是我得出的结论,即问题是关键文件。

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


我在尝试发布时收到的错误是:

Error: Connection timed out

编辑

防火墙已禁用,因此sudo ufw status的结果为disactivated。我启用了它并设置了一些规则。当前状态为:

Status: active

To                         Action      From
--                         ------      ----
8083                       ALLOW       Anywhere
22                         ALLOW       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
1883                       ALLOW       Anywhere
8083 (v6)                  ALLOW       Anywhere (v6)
22 (v6)                    ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
1883 (v6)                  ALLOW       Anywhere (v6)


下一个输出来自iptables sudo iptables -L -v -n

Chain ufw-user-input (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8083
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:8083
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:22
  699 40412 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:80
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:443
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:1883
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:1883
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:1883
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:1883


但是仍然无法发布消息。

Mosquitto所在的计算机可以运行Apache2服务器

我希望这是有道理的。
谢谢。

最佳答案

这是我解决问题的方法。

内容:


蚊子在服务器上,
服务器在虚拟机中
VM在OpenStack上。


在对iptables,ufw,防火墙和mosquitto的配置文件进行了(可能是不必要的)更改之后,我检查了OpenStack(我知道...为什么我以前没有提到它!好吧,我是如此困惑,以至于没有我的第一个想法)。因此,我意识到我的VM的安全组没有端口1883的规则(既不允许也不拒绝)。我加了

尤里卡,我可以从外部计算机发布消息。

这是我的安全组的样子(添加了最后两行):

ssl - 在OpenStack服务器中发布到Mosquitto-LMLPHP

我的收获是,不仅有一扇门,而且像洋葱一样有很多层可以穿过!

希望这会帮助其他人。

关于ssl - 在OpenStack服务器中发布到Mosquitto,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54056736/

10-10 04:40