RabbitMQ3.3.1无法使用 guest/guest 登录

我已经在 VPS Debian Linux 机器上安装了 RabbitMQ 的最新版本。试图通过 guest/guest 登录,但返回的消息是 登录失败。我做了一点调查,发现出于安全原因,禁止通过远程访客/访客登录。

我还尝试通过手动创建 rabbitmq.config文件(因为安装时没有创建)并只放置以下条目来启用这个版本上的 guest 用户远程登录

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

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

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

它还是没有登录我的客人/客人。我还尝试过在 Windows VPS 上安装 RabbitMQ,并尝试通过 guest/guest 通过 localhost 登录,但我再次收到了相同的消息 登录失败

还提供了一个源代码,我可以在那里尝试安装旧版本的 RabbitMQ,它确实支持通过 guest/guest 远程登录。

131730 次浏览

I tried on Debian the same configuration with the following steps:

  1. Installed RabbitMQ.
  2. Enabled the web-management plug-in (not necessary).

When I tried to login I had the same error:

enter image description here

So I created a rabbitmq.config file (classic configuration file) inside the /etc/rabbitmq directory with the following content (notice the final dot):

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

Alternatively, one can create instead a rabbitmq.conf file (new configuration file) inside the same directory with the following content:

loopback_users = none

Then I executed the invoke-rc.d rabbitmq-server start command and both the console and the Java client were able to connect using the guest/guest credentials:

enter image description here

So I think you have some other problem if this procedure doesn't work. For example your RabbitMQ might be unable to read the configuration file if for some reason you have changed the RABBITMQ_CONFIG_FILE environment variable.

I had the same problem. I tried what was suggested by Gas and ran "invoke-rc.d rabbitmq-server start" it didn't start. I tried to reboot the server and the webui worked with the guest user. Maybe after adding the rabbitmq.config file, something else also needed to started.

I used rabbitmq version 3.5.3.

One more thing to note: if you're using AWS instance then you need to open inbound port 15672. (The port for RabbitMQ versions prior to 3.0 is 55672.).

Students and I stared at this problem for an hour. Be sure you've named your files correctly. In the /etc/rabbitmq directory, there are two distinct files. There is an /etc/rabbitmq/rabbitmq.config file which you should edit to get the loopback users as described, but there is another file called rabbitmq-env.conf file. Many folks were using tab completion and just adding "ig", which isn't the right file. Double check!

sometimes you don't need the comma , which is there in the configuration file by default , if nothing else is configured below rabbit tag , while starting broker we will get a crash

like {loopback_users, []} , I spend many times hours forgetting this and later removing the comma , it is applicable for all other configurations including SSL

I had the same Problem..

I installed RabbitMQ and Enabled Web Interface also but still couldn't sign in with any user i newly created, this is because you need to be administrator to access this.

Do not create any config file and mess with it..

This is what i did then,

  1. Add a new/fresh user, say user test and password test:

    rabbitmqctl add_user test test
    
  2. Give administrative access to the new user:

    rabbitmqctl set_user_tags test administrator
    
  3. Set permission to newly created user:

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

That's it, enjoy :)

This is a new features since the version 3.3.0. You can only login using guest/guest on localhost. For logging from other machines or on ip you'll have to create users and assign the permissions. This can be done as follows:

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

for other guys which use Ansible for RabbitMQ provisioning, what I missed for rabbitmq_user module was tags: administrator

here is my working Ansible configuration to recreate "guest" user (for development environment purpose, don't do that in production environment):

- 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

and I also had to setup a file /etc/rabbitmq/rabbitmq.config containing the following:

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

in order to be able to log using "guest"/"guest" from outside of localhost

Try restart your rabbitmq and login again, for me work.

notice: check your PORT is 15672 ! (version > 3.3 ) if 5672 not works

First of all, check the "choosen answer above":

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

and if still can't make connection work, check if your port is correct!

for me, this command works:

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

for the completed ports , check this: What ports does RabbitMQ use?

to verify your rabbit mq server, check this: Verify version of rabbitmq

p.s.

For me, after I created the "test" user and run set_user_tags, set_permissions , I can't connect to rabbitmq via port 5672. but I can connect via 15672.

However, port 15672 always gives me a "blank response". and my code stop working.

so about 5 minutes later, I switched to 5672, everything worked!

Very wired problem. I have no time to dig deeper. so I wrote it down here for someone meeting the same problems.

For a slightly different use, but might be useful for anyone dealing with accessing the API for monitoring purposes: I can confirm the answer given by @Oliboy50 works well, however make sure you enable it for each vhost you want the user to be able to monitor, such as:

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

With this loop I was able to get past the "401 Unauthorized" error when using the API for any vhost.

If you will check the log file under info report you will get this.

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

Change the config file permission using below command then login using guest , it will work

sudo chmod 777 /etc/rabbitmq/rabbitmq.config

#Create rabbitmq.conf file with

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

Run:

$ docker build -t  my-rabbitmq-image .


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

Check that the rabbitmq.conf file has been copied correctly.

$ docker exec -it my_container_id /bin/bash


$ vim /etc/rabbitmq/rabbitmq.conf

By default, the guest user is prohibited from connecting from remote hosts; it can only connect over a loopback interface (i.e. localhost). This applies to connections regardless of the protocol. Any other users will not (by default) be restricted in this way.

It is possible to allow the guest user to connect from a remote host by setting the loopback_users configuration to 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

Or, in the classic config file format (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, []}]}].

See at "guest" user can only connect from localhost

TIP: It is advisable to delete the guest user or at least change its password to reasonably secure generated value that won't be known to the public.

Adding the below line in the config file and restarting the server worked for me. Kindly try in your setup.

loopback_users.guest = false

I got this line from the example RabbitMQ config file from Github as linked here.