Невозможно получить доступ к серверу RabbitMQ от других клиентов в сети из-за ошибки аутентификации

Я установил RabbitMQ на Ubuntu 14.04 и не могу подключиться к серверу RabbitMQ с других компьютеров в сети.

Проблем с подключением к серверу с машины, на которой установлен RabbitMQ, нет, только с других компьютеров в сети.

На На этой странице указано, что "По умолчанию RabbitMQ прослушивает порт 5672 на всех доступных интерфейсах".

При попытке подключиться с другого сервера с помощью pika в 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 с других компьютеров в сети, но могу получить к нему доступ на локальном компьютере.

Также, проверив открытые порты, я вижу следующее:

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   

Я использую код Python из учебников RabbitMQ:

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

Что мне не хватает?


person Greg    schedule 15.03.2016    source источник
comment
Можете ли вы обновить вопрос, чтобы включить код, который вы используете для подключения?   -  person Derick Bailey    schedule 15.03.2016
comment
Обновил вопрос, код взят с обучающей страницы RabbitMQ.   -  person Greg    schedule 15.03.2016


Ответы (2)


Рассматриваемый код не предоставляет имя пользователя или пароль. Вам, вероятно, потребуется обновить параметры подключения, чтобы включить


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

Также проверьте правильность имени пользователя и пароля. гостевое имя пользователя/пароль может быть не включено на вашем сервере

person Derick Bailey    schedule 15.03.2016

По умолчанию RabbitMQ принимает соединения для пользователя guest только с локального хоста. Это объясняется в документации об управлении доступом.

Чтобы разрешить подключения для пользователя guest с удаленных хостов, необходимо изменить параметр конфигурации loopback_users (обычно в /etc/rabbitmq/rabbitmq.config в Unix):

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

Подробнее об этом параметре можно прочитать в документации по настройке.

Тем не менее, будьте осторожны: этот пользователь, созданный по умолчанию, со слабым известным паролем, имеет права администратора. Таким образом, изменение этого параметра конфигурации должно выполняться только в доверенной сети.

person Jean-Sébastien Pédron    schedule 17.03.2016