Frage SSH-Verbindungsproblem mit "Hostschlüsselüberprüfung fehlgeschlagen ..." Fehler


Ich kann eine Verbindung zu einem anderen Ubuntu-Rechner in meinem LAN über SSH herstellen. Auf beiden PCs habe ich dann installiert openssh-server  aber von einem anderen Ubuntu Computer kann ich keine Verbindung zu meinem PC über SSH herstellen und habe diesen Fehler:

Überprüfung des Hostschlüssels fehlgeschlagen ...


139
2018-05-28 11:36


Ursprung


Verwenden Sie Hostnamen oder IP-Adressen? - Thorbjørn Ravn Andersen
Nicht ähnlich, aber ich habe den gleichen Fehler, aber wegen eines anderen Problems: serverfault.com/questions/494916/ ... - zengr
Dies ist kein Ubuntu-spezifisches Problem. Kann mit jedem passieren ssh über die Befehlszeile. - MarkHu


Antworten:


"Überprüfung des Hostschlüssels fehlgeschlagen" bedeutet, dass der Gastgeber Der Schlüssel des Remote-Hosts wurde geändert.

SSH speichert die Hostschlüssel der entfernten Hosts in ~/.ssh/known_hosts. Sie können diese Textdatei entweder manuell bearbeiten und den alten Schlüssel entfernen (Sie können die Zeilennummer in der Fehlermeldung sehen) oder verwenden

ssh-keygen -R hostname

(was ich von der Antwort auf gelernt habe Ist es möglich, einen bestimmten Host-Schlüssel aus der SSH-Datei known_hosts zu entfernen?).


164
2018-05-28 13:19



Es kann auch bedeuten, dass Sie einfach nicht den Host-Schlüssel des Remote-Hosts haben. Zum Beispiel, wenn ich rm ~/.ssh/*, dann ssh -o BatchMode=yes root@somewhereWenn nichts anderes falsch ist, werde ich bekommen Host key verification failed.  Nicht wichtig, wenn Sie immer interaktiv sind, aber relevant für Skripte, bei denen derselbe Fehler auftritt. - Ron Burk
Nicht überraschend, ssh-keygen -R example.net:7999 Erträge Host example.net:7999 not found in known_hosts. - alex
Ich entfernte known_hosts Datei und ssh erneut. Es funktionierte. - ParisaN


Wenn Sie in bestimmten Remote / Scripting-Situationen arbeiten, in denen Sie keinen interaktiven Zugriff auf den Prompt-to-Add-Hostkey haben, umgehen Sie das folgendermaßen:

$ ssh -o StrictHostKeyChecking=no user@something.example.com uptime

Warnung: "something.example.com, 10.11.12.13" (RSA) wurde der Liste der bekannten Hosts dauerhaft hinzugefügt.


104
2017-07-24 00:47



+1, das ist eine hässliche Lösung, aber in einigen Fällen von automatisierten Überwachungsprozessen, die mit dymaischen IP-verbundenen Geräten arbeiten, ist dies eine einfache und akzeptable Lösung. - Ninsuo
+1 Zum Beispiel für Jenkins Ausführungen ist dies eine gute Lösung. Vielen Dank - Lobo
@Lobo kann nicht mehr zustimmen, ich benutze es für Jenkins, das ist cool sh """ssh -o StrictHostKeyChecking=No ec2-user@someIpAddress-e2e sudo service tomcat restart""" - prayagupd
Rettete mein Leben. Lebensretter Lösung. - user1735921


Manchmal gibt es auch Situationen, in denen Sie an der seriellen Konsole arbeiten und dann den obigen Befehl im ausführlichen Modus überprüfen -v Wird dir zeigen /dev/tty existiert nicht, während es tut.

ssh -v user@hostname

Im obigen Fall einfach entfernen /dev/tty und erstellen Sie einen Symlink von /dev/ttyS0 zu /dev/tty.

rm /dev/tty
ln -s /dev/ttyS0 /dev/tty

Als Alternative hinzufügen id_rsa.pub an den Remote-Standort, so dass das Passwort nicht angefordert wird und Sie Login-Zugriff erhalten.


10
2018-05-27 13:01



+1 für die Empfehlung, den Parameter -v zu verwenden; Dies kann beim Debuggen von SSH-Problemen sehr hilfreich sein. - daniel kullmann


In meinem Fall wurde dies durch ein udev Problem verursacht - es gab keine /dev/tty Geräteknoten. Die Lösung für mich war nur:

sudo mknod -m 666 /dev/tty c 5 0

8
2017-07-25 20:28





Nun, es ist einfach, weil das zweite Ubuntu eine Verbindung mit Schlüssel und nicht mit Passwort erfordert.

Ich schlage vor, Sie verwenden sudo dpkg-reconfigure openssh-server auf Ihrem PC, und dann sollte es richtig funktionieren. Es wird die Konfiguration für openssh zurücksetzen und sollte zu einer Standardpasswortauthentifizierung zurückkehren.

Zweite Möglichkeit ist, dass es bereits einen Schlüssel für Ihr anderes Ubuntu in Ihrem PC gibt, und dass es sich geändert hat und somit nicht mehr erkannt wird. In diesem Fall müssen Sie die Datei bearbeiten .ssh/authorized_keys Entfernen Sie die problematische Zeile, die Ihr Ubuntu identifiziert.


3
2018-05-28 11:39





Dies ist ein alter Thread und ich bin gerade über diese Antwort gestolpert, ich werde nur hinzufügen, was ich getan habe, um das zu lösen.

ssh-keygen -f "/home/USER/.ssh/known_hosts" -R HOSTNAME

Ich habe mir nur die Fehlermeldung angeschaut, die sie mir zuwarf und sie sagte, dass sie diesen Befehl ausführen solle, um ihn aus der Liste der Hosts zu entfernen. Danach habe ich folgendes gemacht:

ssh-copy-id HOSTNAME

Dann folgte ich den Anweisungen von dort, bis ich in den Server gehen konnte.


3
2018-04-15 16:09



Als diesen Befehl bekomme ich als Vorschlag in Ubuntu 12.4. - MaNKuR


Am Terminal:

ssh -o StrictHostKeyChecking=No -i YourPublicKey.pem user@example.com uptime

Die folgende Nachricht oder ähnliches wird angezeigt:

Warning: Permanently added 'example.com, XX.XXX.XXX.XX' (ECDSA) to the list of known hosts.
 00:47:37 up 3 min,  0 users,  load average: 0.00, 0.00, 0.00

Verbinden Sie sich dann wie gewohnt mit Ihrem EC2:

ssh -i YourPublickey.pem user@example.com

3
2018-03-27 00:50



ich habe command-line line 0: Bad yes/no/ask argument. weil Sie fälschlicherweise "Nein" anstelle von "Nein" als Argument verwenden StrictHostKeyChecking - Axel Bregnsbo


Dies bedeutet, dass Ihr Remote-Host-Schlüssel geändert wurde (Änderung des Host-Passworts),

Ihr Terminal hat vorgeschlagen, diesen Befehl als Root-Benutzer auszuführen

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231

Sie müssen diesen Hostnamen aus der Hostliste auf Ihrem PC / Server entfernen. Kopieren Sie den vorgeschlagenen Befehl und führen Sie ihn als Root-Benutzer aus.

$ sudo su                                                            // Login as a root user

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231   // Terminal suggested command execute here
Host [www.website.net]:4231 found: line 16 type ECDSA
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

$ exit                                                               // Exist from root user

$ sudo ssh root@www.website.net -p 4231                              // Try again

Hoffe, das funktioniert.


2
2017-08-14 04:59