RabbitMQ 3.3.1 kann sich nicht mit Gast / Gast anmelden

78

Ich habe die neueste Version von RabbitMQ auf einer VPS Debian Linux-Box installiert. Es wurde versucht, sich über Gast / Gast anzumelden, aber die Meldung wurde zurückgegeben. Die Anmeldung ist fehlgeschlagen . Ich habe ein wenig recherchiert und festgestellt, dass es aus Sicherheitsgründen verboten ist, sich per Gast / Gast aus der Ferne anzumelden.

Ich habe auch versucht, Gastanwendungen in dieser Version zu aktivieren, um sich remote anzumelden, indem ich eine rabbitmq.configDatei manuell erstellt habe (weil die Installation keine erstellt hat) und nur den folgenden Eintrag eingefügt habe

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

Nach dem Neustart des rabbitmq mit dem folgenden Befehl.

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

Es hat mich immer noch nicht mit Gast / Gast angemeldet. Ich habe auch versucht, RabbitMQ unter Windows VPS zu installieren und habe versucht, mich über guest / guest über localhost anzumelden, aber ich erhalte erneut die gleiche Meldung. Die Anmeldung ist fehlgeschlagen .

Stellen Sie mir auch eine Quelle zur Verfügung, aus der ich versuchen kann, die alte Version von RabbitMQ zu installieren, die die Remote-Protokollierung über Gast / Gast unterstützt.

Hamad Salahuddin
quelle
2
Bitte lesen Sie diesen Beitrag: stackoverflow.com/questions/22850546/…
Gabriele
Danke Gabriele, das hat bei mir nach deinem Link funktioniert. Am Ende habe ich einen neuen Testbenutzer erstellt und ihm die richtigen Berechtigungen erteilt
Sweet Chilly Philly
Hier ist die richtige Antwort, die mir geholfen hat. stackoverflow.com/a/29344487/1491359
Rishi Agrawal
Ich bin auf ein ähnliches Problem gestoßen und habe festgestellt, dass die folgenden Aktionen beim Debuggen hilfreich sind. Versuchen Sie rabbitmq-serverdirekt zu starten . Wenn dies fehlschlägt, versuchen Sie, nützliche Informationen in der Protokolldatei zu finden. Unter Ubuntu befindet sich die Protokolldatei in /var/log/rabbitmq/.
Hong

Antworten:

205

Ich hatte das gleiche Problem ..

Ich habe auch RabbitMQ und Enabled Web Interface installiert, konnte mich aber immer noch nicht mit einem neu erstellten Benutzer anmelden. Dies liegt daran, dass Sie Administrator sein müssen, um darauf zugreifen zu können.

Erstellen Sie keine Konfigurationsdatei und spielen Sie damit herum.

Das habe ich damals gemacht,

  1. Fügen Sie einen neuen / neuen Benutzer hinzu, sagen Sie Benutzer testund Passwort test:

    rabbitmqctl add_user test test
    
  2. Gewähren Sie dem neuen Benutzer Administratorzugriff:

    rabbitmqctl set_user_tags test administrator
    
  3. Berechtigung für neu erstellten Benutzer festlegen:

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

Das war's, viel Spaß :)

Prasanth Jaya
quelle
15
Dies war der richtige Weg. kinderleicht.
Eriklane
2
Sobald ich diese 3 Befehlszeilen ausgeführt habe, kann ich von der Fernbedienung aus auf die RabbitMQ-Verwaltungskonsole zugreifen
Jeson Martajaya
Es funktionierte. Vielen Dank. Für mich ist nach diesen 3 Schritten ein Neustart erforderlich
Kiren Siva
Ich denke, dass nur ein Tag managementerforderlich ist, um sich bei der Weboberfläche anmelden zu können. Tag administratorist eine erweiterte Version der managementBerechtigung rabbitmq.com/management.html#permissions
piotrekkr
85

Ich habe auf Debian die gleiche Konfiguration mit den folgenden Schritten versucht:

  1. Installiertes RabbitMQ.
  2. Das Webverwaltungs-Plug-In wurde aktiviert (nicht erforderlich).

Als ich versuchte mich anzumelden, hatte ich den gleichen Fehler:

Geben Sie hier die Bildbeschreibung ein

Also habe ich eine rabbitmq.configDatei ( klassische Konfigurationsdatei ) im /etc/rabbitmqVerzeichnis mit folgendem Inhalt erstellt (beachten Sie den letzten Punkt):

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

Alternativ kann stattdessen eine rabbitmq.confDatei ( neue Konfigurationsdatei ) im selben Verzeichnis mit folgendem Inhalt erstellt werden:

loopback_users = keine

Dann habe ich den invoke-rc.d rabbitmq-server startBefehl ausgeführt und sowohl die Konsole als auch der Java-Client konnten eine Verbindung mit den Gast- / Gastanmeldeinformationen herstellen:

Geben Sie hier die Bildbeschreibung ein

Ich denke, Sie haben ein anderes Problem, wenn dieses Verfahren nicht funktioniert. Beispielsweise kann Ihr RabbitMQ die Konfigurationsdatei möglicherweise nicht lesen, wenn Sie aus irgendeinem Grund die RABBITMQ_CONFIG_FILEUmgebungsvariable geändert haben .

Gabriele
quelle
Dies funktionierte auch nicht für mich unter Ubuntu 14. Es scheint /etc/rabbitmq/rabbitmq.config
Cerin
1
Ich fand heraus, dass bei der Installation von Kaninchen mithilfe von Anweisungen für Ubuntu auf der offiziellen Website die Konfigurationsdatei auch für mich fehlte. Diese Antwort hat das behoben.
David
18

Dies ist eine neue Funktion seit der Version 3.3.0. Sie können sich nur mit guest / guest auf localhost anmelden. Für die Protokollierung von anderen Computern oder auf IP müssen Sie Benutzer erstellen und die Berechtigungen zuweisen. Dies kann wie folgt erfolgen:

rabbitmqctl add_user test test
rabbitmqctl set_user_tags test administrator
rabbitmqctl set_permissions -p / test ".*" ".*" ".*"
Vineet Nair
quelle
4

Für andere Leute, die Ansible für die RabbitMQ-Bereitstellung verwenden, habe ich das rabbitmq_userModul verpassttags: administrator

Hier ist meine funktionierende Ansible-Konfiguration zum Neuerstellen eines "Gast" -Benutzers (für Entwicklungsumgebungszwecke tun Sie dies nicht in der Produktionsumgebung):

- 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

und ich musste auch eine Datei /etc/rabbitmq/rabbitmq.configeinrichten, die Folgendes enthielt:

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

um sich mit "guest" / "guest" von außerhalb von localhost anmelden zu können

Oliboy50
quelle
Hatte gerade diesen Anwendungsfall ... habe einen Kaninchenbenutzer mit Ansible erstellt und ich konnte mich nicht über das Web anmelden ... das hat funktioniert!
Tomislav Mikulin
4

Hinweis: Überprüfen Sie, ob Ihr PORT 15672 ist! (Version> 3.3) wenn 5672 nicht funktioniert

Überprüfen Sie zunächst die "oben gewählte Antwort":

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

und wenn die Verbindung immer noch nicht funktioniert, überprüfen Sie, ob Ihr Port korrekt ist!

Für mich funktioniert dieser Befehl:

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

Überprüfen Sie für die abgeschlossenen Ports Folgendes: Welche Ports verwendet RabbitMQ?

Überprüfen Sie Folgendes , um Ihren rabbit mq-Server zu überprüfen: Überprüfen Sie die Version von rabbitmq

ps

Nachdem ich den "Test" -Benutzer erstellt und ausgeführt habe set_user_tags, set_permissionskann ich keine Verbindung zu rabbitmq über Port 5672 herstellen, aber ich kann eine Verbindung über 15672 herstellen.

Port 15672 gibt mir jedoch immer eine "leere Antwort". und mein Code funktioniert nicht mehr.

Also ungefähr 5 Minuten später wechselte ich zu 5672, alles funktionierte!

Sehr verdrahtetes Problem. Ich habe keine Zeit tiefer zu graben. Also habe ich es hier für jemanden geschrieben, der die gleichen Probleme hat.

Siwei Shen 申思维
quelle
2

Ich hatte das gleiche Problem. Ich habe versucht, was von Gas vorgeschlagen wurde, und "invoke-rc.d rabbitmq-server start" ausgeführt, es wurde nicht gestartet. Ich habe versucht, den Server neu zu starten, und das Webui hat mit dem Gastbenutzer zusammengearbeitet. Möglicherweise musste nach dem Hinzufügen der Datei rabbitmq.config noch etwas anderes gestartet werden.

Ich habe rabbitmq Version 3.5.3 verwendet.

Noch etwas zu beachten: Wenn Sie eine AWS-Instanz verwenden, müssen Sie den eingehenden Port 15672 öffnen. (Der Port für RabbitMQ-Versionen vor 3.0 ist 55672.)

Sreeni
quelle
1

Die Schüler und ich starrten eine Stunde lang auf dieses Problem. Stellen Sie sicher, dass Sie Ihre Dateien korrekt benannt haben. Im /etc/rabbitmqVerzeichnis befinden sich zwei unterschiedliche Dateien. Es gibt eine /etc/rabbitmq/rabbitmq.configDatei, die Sie bearbeiten sollten, um die Loopback-Benutzer wie beschrieben zu erhalten, aber es gibt eine andere Datei namens rabbitmq-env.confDatei. Viele Leute verwendeten die Tab-Vervollständigung und fügten nur "ig" hinzu, was nicht die richtige Datei ist. Überprüfen!

Chad Miller
quelle
1

Manchmal benötigen Sie kein Komma, das standardmäßig in der Konfigurationsdatei enthalten ist. Wenn unter dem Kaninchen-Tag nichts anderes konfiguriert ist, wird beim Starten des Brokers ein Absturz angezeigt

Wie {loopback_users, []} verbringe ich viele Stunden damit, dies zu vergessen und später das Komma zu entfernen. Es gilt für alle anderen Konfigurationen, einschließlich SSL

Jaile Sebes
quelle
1

Versuchen Sie, Ihren rabbitmq neu zu starten und sich erneut anzumelden, damit ich arbeite.

Guarana
quelle
1

#Erstellen Sie die Datei rabbitmq.conf mit

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

Lauf:

$ docker build -t  my-rabbitmq-image .

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

Überprüfen Sie, ob die Datei rabbitmq.conf korrekt kopiert wurde.

$ docker exec -it my_container_id /bin/bash

$ vim /etc/rabbitmq/rabbitmq.conf
Srburton
quelle
0

Für eine etwas andere Verwendung, aber möglicherweise nützlich für alle, die zu Überwachungszwecken auf die API zugreifen: Ich kann bestätigen, dass die Antwort von @ Oliboy50 gut funktioniert. Stellen Sie jedoch sicher, dass Sie sie für jeden vhost aktivieren, den der Benutzer verwenden soll Monitor, wie:

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

Mit dieser Schleife konnte ich den Fehler "401 Unauthorized" überwinden, wenn ich die API für einen beliebigen vhost verwendete.

insideClaw
quelle
-1

Wenn Sie die Protokolldatei unter Info-Bericht überprüfen, erhalten Sie diese.

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

Ändern Sie die Berechtigung für die Konfigurationsdatei mit dem folgenden Befehl und melden Sie sich dann mit guest an. Dies funktioniert

sudo chmod 777 /etc/rabbitmq/rabbitmq.config

SRK
quelle
-1

Standardmäßig ist es dem Gastbenutzer untersagt, eine Verbindung von Remote-Hosts herzustellen. Es kann nur eine Verbindung über eine Loopback-Schnittstelle (dh localhost) hergestellt werden. Dies gilt für Verbindungen unabhängig vom Protokoll. Alle anderen Benutzer werden auf diese Weise (standardmäßig) nicht eingeschränkt.

Es ist möglich, dem Gastbenutzer die Verbindung von einem Remote-Host aus zu ermöglichen, indem die Konfiguration von loopback_users auf none gesetzt wird

# 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

Oder im klassischen Konfigurationsdateiformat (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, []}]}].

Siehe unter "Gast" Benutzer kann nur von localhost eine Verbindung herstellen

TIPP: Es ist ratsam, den Gastbenutzer zu löschen oder zumindest sein Kennwort in einen einigermaßen sicheren generierten Wert zu ändern, der der Öffentlichkeit nicht bekannt ist.

Ashutosh
quelle