由于身份验证错误,无法从网络上的其他客户端访问 RabbitMQ 服务器

Unable to access RabbitMQ server from other clients on the network due to authentication error

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

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

This page 表示 "By default, RabbitMQ will listen on port 5672 on all available interfaces".

在 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()

我错过了什么?

相关代码未提供用户名或密码。您可能需要更新连接参数以包含那些


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

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

默认情况下,RabbitMQ 仅接受来自本地主机的 guest 用户的连接。 documentation about access control.

中对此进行了解释

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

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

您可以在 configuration documentation.

中阅读有关此参数的更多信息

也就是说,请注意:默认情况下创建的此用户具有管理员权限,密码较弱。因此,像这样更改此配置参数必须仅在受信任的网络上完成。