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

问题描述:

我在Ubuntu 14.04上安装了RabbitMQ,并且无法从网络上的其他计算机连接到RabbitMQ服务器。由于身份验证错误,无法从网络上的其他客户端访问RabbitMQ服务器

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

This page指出“默认情况下,RabbitMQ将在所有可用接口上监听端口5672”。

当试图从另一个serverusing鼠兔在python连接,我收到以下错误:

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

我缺少什么?

+0

您是否可以更新问题以包含您用于连接的代码? –

+0

更新了问题,代码来自RabbitMQ的教程页面 – Greg

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


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

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

connection = pika.BlockingConnection(params) 

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

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

默认情况下,RabbitMQ仅接受来自本地主机的guest用户的连接。这在documentation about access control中有解释。

为了能够从远程主机的guest用户连接,您需要更改loopback_users配置参数(通常在/etc/rabbitmq/rabbitmq.config在Unix):

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

你可以阅读更多有关此参数的configuration documentation

也就是说,要小心:此用户默认情况下创建,具有弱已知密码,具有管理员权限。所以像这样改变这个配置参数只能在可信网络上完成。