RabbitMQ 3.3.1无法使用访客/来宾登录


78

我已经在VPS Debian Linux机器上安装了最新版本的RabbitMQ。试图通过来宾/来宾登录,但返回消息登录失败。我进行了一些研究,发现出于安全原因,禁止通过访客/访客远程登录。

我还尝试通过rabbitmq.config手动创建文件(因为安装未创建文件)并仅放置以下条目来启用该版本的来宾使用以远程登录

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

使用以下命令重新启动rabbitmq之后。

invoke-rc.d rabbitmq-server stop -- to stop
invoke-rc.d rabbitmq-server start -- to start

它仍然没有用来宾/来宾身份登录我。我也尝试在Windows VPS上安装RabbitMQ,并尝试通过localhost通过guest / guest登录,但是同样,我得到了同样的消息,登录失败

还提供了一个源,我可以在其中尝试安装旧版本的RabbitMQ,该版本确实支持通过来宾/来宾进行远程日志记录。



谢谢Gabriele,您的链接对我有用。我最终创建了一个新的测试用户并给予了正确的权限
Sweet Chilly Philly

这是对我有帮助的正确答案。stackoverflow.com/a/29344487/1491359
Rishi Agrawal

我遇到了类似的问题,发现以下操作有助于调试。尝试rabbitmq-server直接开始。如果失败,请尝试在日志文件中找到有用的信息。在Ubuntu上,日志文件位于中/var/log/rabbitmq/

Answers:


203

我有同样的问题..

我还安装了RabbitMQ和Enabled Web Interface,但仍然无法使用我新创建的任何用户登录,这是因为您需要成为管理员才能访问它。

不要创建任何配置文件并弄乱它。

这就是我当时所做的

  1. 添加新用户/新用户,例如usertest和password test

    rabbitmqctl add_user test test
    
  2. 授予新用户的管理权限:

    rabbitmqctl set_user_tags test administrator
    
  3. 为新创建的用户设置权限:

    rabbitmqctl set_permissions -p / test ".*" ".*" ".*"
    

就是这样,享受:)


15
这是要走的路。十分简单。
eriklane

2
一旦执行了这3个命令行,就可以从远程访问RabbitMQ管理控制台
Jeson Martajaya

有效。谢谢。对我来说,这3个步骤之后需要重新启动
Kiren Siva

我认为只需标记management即可登录Web界面。标签administratormanagement权限的扩展版本rabbitmq.com/management.html#permissions
piotrekkr

85

我通过以下步骤在Debian上尝试了相同的配置:

  1. 已安装RabbitMQ。
  2. 启用了Web管理插件(不需要)。

当我尝试登录时,我遇到了同样的错误:

在此处输入图片说明

因此,我在目录内创建了一个rabbitmq.config文件(经典配置文件),/etc/rabbitmq其中包含以下内容(注意最后一个点):

[{rabbit,[{loopback_users,[]}]}]。

或者,可以在同一目录内创建一个具有以下内容的rabbitmq.conf文件(新配置文件):

loopback_users =无

然后,我执行了invoke-rc.d rabbitmq-server start命令,控制台和Java客户端都能够使用来宾/来宾凭证进行连接:

在此处输入图片说明

因此,如果此程序不起作用,我认为您还有其他问题。例如,如果您由于某些原因更改了RABBITMQ_CONFIG_FILE环境变量,则RabbitMQ可能无法读取配置文件。


在Ubuntu 14上,这对我也不起作用。它似乎忽略了/etc/rabbitmq/rabbitmq.config
Cerin,

1
我发现在官方网站上按照Ubuntu的说明安装了Rabbit,配置文件对我也同样缺少。这个答案解决了这个问题。
大卫,

18

这是自3.3.0版以来的一项新功能。您只能在本地主机上使用guest / guest登录。要从其他计算机或ip登录,您必须创建用户并分配权限。可以按照以下步骤进行:

rabbitmqctl add_user test test
rabbitmqctl set_user_tags test administrator
rabbitmqctl set_permissions -p / test ".*" ".*" ".*"

4

对于使用Ansible进行RabbitMQ设置的其他人,我错过的rabbitmq_user模块是tags: administrator

这是我工作的Ansible配置,用于重新创建“ guest”用户(出于开发环境的目的,请不要在生产环境中这样做):

- name: Create RabbitMQ user "guest" become: yes rabbitmq_user: user: guest password: guest vhost: / configure_priv: .* read_priv: .* write_priv: .* tags: administrator force: yes # recreate existing user state: present

而且我还必须设置一个/etc/rabbitmq/rabbitmq.config包含以下内容的文件:

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

为了能够从本地主机外部使用“ guest” /“ guest”进行登录


刚有了这个用例...创建了一个可兔的兔子用户,但我无法通过网络登录....
Tomislav Mikulin

4

注意:检查您的端口是15672!(version> 3.3)如果5672不起作用

首先,检查“上面选择的答案”:

rabbitmqctl add_user test test
rabbitmqctl set_user_tags test administrator
rabbitmqctl set_permissions -p / test ".*" ".*" ".*"

如果仍然无法连接,请检查您的端口是否正确!

对我来说,此命令有效:

$ rabbitmqadmin -H 10.140.0.2 -P 15672 -u test -p test list vhosts
+------+----------+
| name | messages |
+------+----------+
| /    |          |
+------+----------+

对于完整的端口,请检查以下内容: RabbitMQ使用哪些端口?

验证您的Rabbit MQ服务器,请检查以下内容: 验证RabbitMQ的版本

ps

对我来说,创建“ test”用户并运行后set_user_tagsset_permissions无法通过端口5672连接到Rabbitmq。但是可以通过15672连接。

但是,端口15672总是给我“空白响应”。和我的代码停止工作。

所以大约5分钟后,我切换到5672,一切正常!

非常有线的问题。我没有时间更深入地研究。所以我在这里写下来是为了遇到同样问题的人。


2

我有同样的问题。我尝试了Gas提出的建议,然后运行了“ invoke-rc.d rabbitmq-server start”,但它没有启动。我尝试重新启动服务器,并且webui与来宾用户一起工作。也许在添加了rabbitmq.config文件之后,还需要启动其他内容。

我使用了Rabbitmq版本3.5.3。

还有一点需要注意:如果您使用的是AWS实例,则需要打开入站端口15672。(3.0之前的RabbitMQ版本的端口为55672。)。


1

学生和我盯着这个问题呆了一个小时。确保您已正确命名文件。在/etc/rabbitmq目录中,有两个不同的文件。有一个/etc/rabbitmq/rabbitmq.config文件,您应该按所述编辑该文件以获取回送用户,但是还有另一个文件称为rabbitmq-env.conffile。许多人都在使用制表符补全,而只是添加“ ig”,这不是正确的文件。再确认一次!


1

有时您不需要逗号,默认情况下该文件位于配置文件中,如果Rabbit标记下没有其​​他配置,则在启动代理时会崩溃

像{loopback_users,[]}一样,我花了很多时间忘记了这个,后来又删除了逗号,它适用于所有其他配置,包括SSL


1

尝试重新启动您的Rabbitmq并再次登录,对我来说工作。


1

#使用以下命令创建rabbitmq.conf文件

rabbitmq.conf

loopback_users = none

Dockerfile:

FROM rabbitmq:3.7-management

#Rabbitmq config
COPY rabbitmq.conf /etc/rabbitmq/rabbitmq.conf

#Install vim (edit file)
RUN ["apt-get", "update"]
RUN ["apt-get", "-y", "install", "vim"]

#Enable plugins rabbitmq
RUN rabbitmq-plugins enable --offline rabbitmq_mqtt rabbitmq_federation_management rabbitmq_stomp

跑:

$ docker build -t  my-rabbitmq-image .

$ docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672  my-rabbitmq-image

检查rabbitmq.conf文件是否已正确复制。

$ docker exec -it my_container_id /bin/bash

$ vim /etc/rabbitmq/rabbitmq.conf

0

用途稍有不同,但对处理用于监视目的访问API的任何人可能都有用:我可以确认@ Oliboy50给出的答案很好用,但是请确保为希望用户能够使用的每个虚拟主机启用它监视器,例如:

      permissions:
    - vhost: "{{item.name}}"
      configure_priv: .*
      write_priv: .*
      read_priv: .*
  state: present
  tags: management
with_items: "{{user_system_users}}"

通过此循环,当对任何虚拟主机使用API​​时,我都能克服“ 401未经授权”错误。


-1

如果您要检查信息报告下的日志文件,则会得到此信息。

`config file(s) : /etc/rabbitmq/rabbitmq.config (not found)`. 

使用以下命令更改配置文件权限,然后使用guest登录,它将起作用

sudo chmod 777 /etc/rabbitmq/rabbitmq.config


-1

默认情况下,禁止来宾用户从远程主机进行连接;它只能通过回送接口(即本地主机)进行连接。无论协议如何,这都适用于连接。默认情况下,任何其他用户都不会受到这种方式的限制。

通过将loopback_users配置设置为none,可以允许来宾用户从远程主机连接。

# DANGER ZONE!
#
# allowing remote connections for default user is highly discouraged
# as it dramatically decreases the security of the system. Delete the user
# instead and create a new one with generated secure credentials.
loopback_users = none

或者,以经典配置文件格式(rabbitmq.config):

%% DANGER ZONE!
%%
%% Allowing remote connections for default user is highly discouraged
%% as it dramatically decreases the security of the system. Delete the user
%% instead and create a new one with generated secure credentials.
[{rabbit, [{loopback_users, []}]}].

见于 “来宾”用户只能从本地主机连接

提示:建议删除来宾用户或至少更改其密码,以合理地保护公众不会知道的生成值。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.