Невозможно получить доступ к серверу 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()
Что мне не хватает?
2 ответа
Данный код не предоставляет имя пользователя или пароль. Вероятно, вам потребуется обновить параметры подключения, чтобы включить эти
credentials = pika.PlainCredentials('guest', 'guest')
parameters = pika.ConnectionParameters('rabbit-server1', 5672, '/', credentials)
connection = pika.BlockingConnection(params)
Проверьте документы на pika, для получения дополнительной информации: http://pika.readthedocs.org/en/0.10.0/modules/parameters.html?highlight=connectionParameters
Кроме того, убедитесь, что у вас есть действительные имя пользователя и пароль. "Гость" имя пользователя / пароль не могут быть включены на вашем сервере
По умолчанию RabbitMQ принимает соединения для guest
пользователь только с localhost. Это объясняется в документации по контролю доступа.
Разрешить соединения для guest
пользователь с удаленных хостов, вам нужно изменить loopback_users
параметр конфигурации (обычно в /etc/rabbitmq/rabbitmq.config
в Unix):
[
{rabbit, [
{loopback_users, []}
]}
].
Подробнее об этом параметре можно прочитать в документации по конфигурации.
Тем не менее, будьте осторожны: этот пользователь, созданный по умолчанию со слабым известным паролем, имеет права администратора. Таким образом, изменение этого параметра конфигурации должно выполняться только в доверенной сети.