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

Posted

技术标签:

【中文标题】RabbitMQ 3.3.1 无法使用访客/访客登录【英文标题】:RabbitMQ 3.3.1 can not login with guest/guest 【发布时间】:2014-07-03 09:38:06 【问题描述】:

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

我还尝试通过手动创建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 通过访客/访客登录,但我再次收到相同的消息 login failed

还为我提供一个源,我可以在其中尝试安装支持通过来宾/来宾远程记录的旧版 RabbitMQ。

【问题讨论】:

请阅读这篇文章:***.com/questions/22850546/… 感谢 Gabriele,按照您的链接,这对我有用。我最终创建了一个新的测试用户并为其提供了正确的权限 这是对我有帮助的正确答案。 ***.com/a/29344487/1491359 我遇到了类似的问题,发现以下操作有助于调试。尝试直接启动rabbitmq-server。如果失败,请尝试在日志文件中查找有用的信息。在 Ubuntu 上,日志文件位于 /var/log/rabbitmq/ 【参考方案1】:

我在 Debian 上尝试了相同的配置,步骤如下:

    已安装 RabbitMQ。 启用网络管理插件(不是必需的)。

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

所以我在/etc/rabbitmq 目录中创建了一个rabbitmq.config 文件(classic configuration file),其内容如下(注意最后一个点):

[rabbit, [loopback_users, []]].

或者,可以在同一目录中创建一个 rabbitmq.conf 文件 (new configuration file),其内容如下:

loopback_users = 无

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

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

【讨论】:

这对我在 Ubuntu 14 上也不起作用。它似乎忽略了 /etc/rabbitmq/rabbitmq.config 我发现使用官方网站上的 Ubuntu 说明安装 rabbit,我也缺少配置文件。这个答案解决了这个问题。【参考方案2】:

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

我使用的是 rabbitmq 3.5.3 版。

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

【讨论】:

【参考方案3】:

我和学生们盯着这个问题看了一个小时。确保您已正确命名文件。在/etc/rabbitmq 目录中,有两个不同的文件。有一个/etc/rabbitmq/rabbitmq.config 文件,您应该编辑它以获取所描述的环回用户,但还有另一个文件称为rabbitmq-env.conf 文件。许多人使用制表符补全,只是添加“ig”,这不是正确的文件。仔细检查!

【讨论】:

【参考方案4】:

有时你不需要逗号,默认情况下在配置文件中,如果在rabbit标签下面没有配置其他东西,同时启动代理 我们会崩溃

喜欢 loopback_users, [] ,我花了很多时间忘记了这一点,后来删除了逗号,它适用于包括 SSL 在内的所有其他配置

【讨论】:

【参考方案5】:

我有同样的问题..

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

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

这就是我当时所做的,

    添加一个新用户,比如用户 test 和密码 test

    rabbitmqctl add_user test test
    

    向新用户授予管理权限:

    rabbitmqctl set_user_tags test administrator
    

    为新创建的用户设置权限:

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

就是这样,享受:)

【讨论】:

这是要走的路。很容易。 一旦我执行了这 3 个命令行,我就可以从远程访问 RabbitMQ 管理控制台 成功了。谢谢你。对我来说,这 3 个步骤后需要重新启动 我认为只需要标签management 就可以登录网络界面。标签administratormanagement权限rabbitmq.com/management.html#permissions的扩展版【参考方案6】:

这是自 3.3.0 版本以来的新功能。您只能在 localhost 上使用 guest/guest 登录。要从其他机器或 IP 上登录,您必须创建用户并分配权限。这可以按如下方式完成:

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

【讨论】:

【参考方案7】:

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

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

- 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”进行登录

【讨论】:

刚刚有这个用例...用 ansible 创建了一个 rabbit 用户,但我无法通过网络登录....这行得通!【参考方案8】:

尝试重新启动您的 rabbitmq 并再次登录,为我工作。

【讨论】:

【参考方案9】:

注意:检查您的 PORT 是 15672 ! (版本 > 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 |
+------+----------+
| /    |          |
+------+----------+

对于已完成的端口,请检查: What ports does RabbitMQ use?

要验证您的 rabbit mq 服务器,请检查:Verify version of rabbitmq

附言

对我来说,在我创建“测试”用户并运行 set_user_tags, set_permissions 后,我无法通过端口 5672 连接到 rabbitmq。但我可以通过 15672 连接。

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

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

非常有线的问题。我没有时间深入挖掘。所以我把它写在这里给遇到同样问题的人。

【讨论】:

这对我很有帮助,谢谢。官方网站对我来说太曲折了——我只是想要一些命令示例来做常见的管理活动,你的评论比官方网站更有帮助。【参考方案10】:

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

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

通过这个循环,我能够在将 API 用于任何虚拟主机时克服“401 Unauthorized”错误。

【讨论】:

【参考方案11】:

如果你检查信息报告下的日志文件,你会得到这个。

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

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

sudo chmod 777 /etc/rabbitmq/rabbitmq.config

【讨论】:

【参考方案12】:

#创建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

【讨论】:

注意这一行应该运行容器的bash docker exec -it my_container_id /bin/bash,它应该是./bin/bash,在路径前加上.。否则,至少在 Windows 上,Docker 似乎将其视为主机系统中的本地路径。【参考方案13】:

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

可以允许访客用户从远程主机连接 通过将 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, []]].

见"guest" user can only connect from localhost

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

【讨论】:

【参考方案14】:

在配置文件中添加以下行并重新启动服务器对我有用。请尝试您的设置。

loopback_users.guest = false

我从 Github 的示例 RabbitMQ 配置文件中获得了这一行,链接为 here。

【讨论】:

以上是关于RabbitMQ 3.3.1 无法使用访客/访客登录的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 spring-rabbit 配置 RabbitMQ 连接?

如何与主机共享访客虚拟机的 *** 连接

无法设置访客内存“android_arm”:参数无效

Laravel Echo - 允许访客连接到出席频道

访客登记使用人脸识别有什么好处?

从登录的社交网络中获取访客姓名