wake-up-neo.com

SSH-Fehler: Berechtigung verweigert (Veröffentlichungsschlüssel, Kennwort) in Ansible

Ich bin neu bei Ansible und versuche, es umzusetzen. Ich habe alle möglichen Möglichkeiten im Internet und auch alle damit verbundenen Fragen ausprobiert, kann den Fehler aber immer noch nicht beheben. Bitte hilf mir.

Ich habe ansible playbook auf meinem Macbook installiert. Ich habe eine VM erstellt, deren IP 10.4.1.141 und die Host-IP 10.4.1.140 ist

Ich habe versucht, eine Verbindung zu meinem VM mithilfe von Host über ssh herzustellen. Es wurde mit folgendem Befehl verbunden:

ssh [email protected]

und ich habe die Shell Zugang bekommen. Dies bedeutet, dass meine SSH gut funktioniert.

Nun habe ich folgenden Befehl für Ansible ausprobiert:

ansible all -m ping

Und der Inhalt im /etc/ansible/Host ist 10.4.1.141

Dann zeigt es den folgenden Fehler:

10.4.1.141 | FAILED => SSH-Fehler: Berechtigung verweigert (Publickey, Passwort).

beim Verbinden mit 10.4.1.141:22 Es ist manchmal nützlich, den Befehl mit -vvvv erneut auszuführen, wodurch die SSH-Debug-Ausgabe gedruckt wird, um das Problem zu diagnostizieren.

Dann habe ich versucht, eine config-Datei im .ssh/-Ordner auf der Host-Maschine zu erstellen, aber der Fehler ist immer noch derselbe.

Der Inhalt der config-Datei lautet:

  IdentityFile ~/.ssh/id_rsa

dies ist der Pfad zu meinem privaten Schlüssel.

Dann habe ich den gleichen Befehl ansible all -m ping ausgeführt und den gleichen Fehler erhalten.

Als ich einen anderen Befehl ausprobierte 

ansible all -m ping -u user --ask-pass

Dann fragte ich nach dem SSH-Passwort, ich gab es (verdammt sicher, dass das Passwort korrekt ist), aber ich habe diesen Fehler erhalten:

10.4.1.141 | FAILED => FAILED: Authentifizierung fehlgeschlagen.

Dies ist das Protokoll, das -vvvv verwendet:

<10.4.1.141> ESTABLISH CONNECTION FOR USER: rajatg <10.4.1.141> REMOTE_MODULE ping <10.4.1.141> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/Users/rajatg/.ansible/cp/ansible-ssh-%h-%p-%r" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 10.4.1.141 /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1445512455.7-116096114788007 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1445512455.7-116096114788007 && echo $HOME/.ansible/tmp/ansible-tmp-1445512455.7-116096114788007' 10.4.1.141 | FAILED => SSH Error: Permission denied (publickey,password). while connecting to 10.4.1.141:22 It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.

Ich kann immer noch nicht herausfinden, was das Problem ist. Es ist meine letzte Entscheidung, es hier zu fragen, nachdem ich alle Recherchen durchgeführt habe. Der letzte Link, den ich angesprochen habe, ist https://valdhaus.co/writings/ansible-mac-osx/

Bitte hilf mir, ich bin festgefahren. Danke im Voraus!

16
Rajat Gupta

Ich habe das Problem behoben. Das Problem war in meinem /etc/ansible/hosts.

Der in /etc/ansible/hosts geschriebene Inhalt war 10.4.1.141. Wenn ich es jedoch in [email protected] ändere, wird das Problem behoben. 

Ich danke Ihnen allen für Ihre Unterstützung und die Klarheit des Problems mithilfe der Kommentare.

25
Rajat Gupta

Das meiste Problem tritt bei der Verbindung von Ubuntu-Computern in Hosts auf. Lösung Ansible musste angeben, welcher Benutzer eine Verbindung herstellen möchte, da Ubuntu keinen Root-Benutzer hat.

für Hosts-Datei 

[Test-Web-Server]

10.192.168.10 ansible_ssh_pass = foo ansible_ssh_user = foo

3
user10126649

Wenn Sie sich mit ssh [email protected] anmelden:

Option 1

Stellen Sie dann sicher, dass sich in Ihrer Hosts-Datei in etc\ansible Folgendes befindet: 

[server01]
10.4.1.141

dann innerhalb von etc\ansible ausführen: ansible all -m ping -u user --ask-pass

Option 2

Wenn Sie sich ohne Eingabe des SSH-Passworts anmelden möchten, fügen Sie in Ihrer hosts-Datei in etc\ansible Folgendes hinzu: 

[server01]
10.4.1.141 ansible_ssh_pass=xxx ansible_ssh_user=user

dann innerhalb von etc\ansible ausführen: ansible all -m ping

für mich funktionierte es in beide Richtungen.

1
bebs

Wenn Sie beispielsweise mit Sudo Ansible ausführen

Sudo ansible -m ping all

bitte beachten Sie, dass sich der public-Schlüssel für root auch auf dem Server befinden muss, den Sie erreichen möchten, nicht nur der öffentliche Schlüssel von Ihrem Nicht-Root-Benutzer. Ansonsten erhalten Sie auch die obige Fehlermeldung.

Ich habe auch dieses Problem behoben.

Mein Problem war auch in meiner Hosts-Datei /etc/ansible/hosts

Ich habe meine Hosts-Datei von 172.28.2.101 In name-of-server-in-ssh-config geändert.

Ich hatte IPs in der Hosts-Datei. Da ich bereits SSH-Konfigurationen für Namen eingerichtet habe, muss ich vor den Hosts keine Variablen oder Benutzernamen verwenden.

[name-stg-web]
server-name-stg-web[01:02]
1
camdixon

Durch Erwähnung des Benutzernamens in der Datei/etc/hosts kann das Problem ebenfalls behoben werden.

#Sudo vim /etc/hosts
[test-server]
ip_address ansible_user="remote pc's username" 
0
Hareesh R

Die oben genannten Lösungen haben bei mir leider nicht funktioniert (DevOps-Laie hier!). Aber der unten hat bei mir funktioniert.

Ändern Sie Ihre Inventardatei in:

[webserver] 10.4.1.141 ansible_user=ubuntu

nicht erreichbarer Webserver --private-key pem_file.pem -m ping

Wenn ich den Befehl mit -vvvv getroffen habe, konnte ich ihn besser debuggen.

Referenz: https://github.com/ansible/ansible/issues/19584

0
Nätu

Das Problem liegt in der Inventardatei.

vi/etc/ansible/hosts

[webserver] 192. ###. ###. ### ansible_ssh_user = user ansible_ssh_pass = pass

Ich hoffe das hilft!

0
Sonal