1

我在 Ubuntu 14.04 上安装了 RabbitMQ,但无法从网络上的其他计算机连接到 RabbitMQ 服务器。

从安装 RabbitMQ 的机器连接到服务器没有问题,只有从网络上的其他计算机连接。

该页面声明“默认情况下,RabbitMQ 将在所有可用接口上侦听端口 5672”。

当尝试在 python 中使用 pika 从另一个服务器连接时,我收到以下错误:

ERROR:pika.adapters.base_connection:Socket Error: 104
ERROR:pika.adapters.base_connection:Socket closed while authenticating indicating a probable authentication error

我添加了一个具有权限的新用户set_permissions newuser ".*" ".*" ".*"并尝试了 URI 身份验证方法,但是我仍然收到相同的错误。

我也无法从网络上的其他计算机连接到 RabbitMQ 管理,但可以在本地 pc 上访问它。

此外,通过检查开放端口,我可以看到以下内容:

tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      1122/beam.smp   
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      1122/beam.smp   
tcp6       0      0 :::5672                 :::*                    LISTEN      1122/beam.smp   

我正在使用 RabbitMQ 教程中的 python 代码:

import pika

connection = pika.BlockingConnection(pika.ConnectionParameters(host='AAA.AAA.AAA.AAA'))
channel = connection.channel()

channel.queue_declare(queue='hello')

channel.basic_publish(exchange='',routing_key='hello',body='Hello World!')

print(" [x] Sent 'Hello World!'")

connection.close()

我错过了什么?

4

2 回答 2

3

有问题的代码不提供用户名或密码。您可能需要更新连接参数以包括那些


credentials = pika.PlainCredentials('guest', 'guest')

parameters = pika.ConnectionParameters('rabbit-server1', 5672, '/', credentials)

connection = pika.BlockingConnection(parameters)

检查 pika 的文档,了解更多信息:http ://pika.readthedocs.org/en/0.10.0/modules/parameters.html?highlight=connectionParameters

此外,请检查以确保您拥有有效的用户名和密码。您的服务器上可能未启用“访客”用户名/密码

于 2016-03-15T21:29:33.697 回答
2

默认情况下,RabbitMQ 只接受guest来自 localhost 的用户连接。这在有关访问控制的文档中进行了解释。

要允许guest来自远程主机的用户连接,您需要更改loopback_users配置参数(通常在/etc/rabbitmq/rabbitmq.configUnix 上):

[
  {rabbit, [
    {loopback_users, []}
  ]}
].

您可以在配置文档中阅读有关此参数的更多信息。

也就是说,要小心:这个默认创建的用户使用弱已知密码,具有管理员权限。因此,像这样更改此配置参数只能在受信任的网络上进行。

于 2016-03-17T23:18:16.667 回答