it-swarm.com.de

Überprüfen Sie den Fingerabdruck für den vom Remote-Host gesendeten ECDSA-Schlüssel

Ich habe die bekannte Warnmeldung erhalten, wenn ich versuche, auf einen Server zu ssh:

$ ssh whateverhost
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE Host IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a Host key has just been changed.
The fingerprint for the ECDSA key sent by the remote Host is
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Please contact your system administrator.
Add correct Host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/user/.ssh/known_hosts:10
ECDSA Host key for ipofmyhost has changed and you have requested strict checking.
Host key verification failed.

Und ich weiß warum, weil ich die IP eines solchen Servers geändert habe. Aber wenn nicht, wie könnte ich den Fingerabdruck auf den vom Remote-Host gesendeten ECDSA-Schlüssel überprüfen?

Ich habe versucht, dies zu tun durch:

echo -n ipofthehost | sha256sum

Aber ich bekomme nicht den gleichen Fingerabdruck. Ich habe auch versucht, "Hostname, IP" wie in aws, aber ich habe keine Übereinstimmung.

Wenn ich den Eintrag aus meiner Datei "unknown_hosts" lösche und erneut versuche, ssh auszuführen, ist dies erfolgreich und weist Folgendes aus:

ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Are you sure you want to continue connecting (yes/no)? 

Wofür wird die sha256sum angewendet, um den Fingerabdruck zu erhalten, und wie kann ich ihn überprüfen?

25
gugol

Ein Fingerabdruck mit öffentlichem Schlüssel ist nicht der einfache Hash einer IP-Zeichenfolge.

Um einen öffentlichen Remote-Host-Schlüssel abzurufen, können Sie ssh-keyscan <IP> Verwenden und dann mit den üblichen Tools den Fingerabdruck extrahieren (ssh-keygen -lf <public_key_file>).

Schließlich können Sie mit known_hosts Den aktuellen Fingerabdruck in Ihrer ssh-keygen -l -F <domain_or_ip> - Datei vergleichen.

13
Xavier Lucas

etwas ausführlicher: Da sich die Warnmeldung auf den Fingerabdruck für den vom Remote-Host gesendeten ECDSA-Schlüssel bezieht, sammeln wir die Informationen über den öffentlichen (ecdsa) Schlüssel des Hosts:

ssh-keyscan -t ecdsa ip_or_hostmane > ecdsa_file_to_compare

Dann können wir herausfinden, wo sich in unserer Datei "unknown_hosts" dieser öffentliche (ecdsa) Schlüssel befindet:

ssh-keygen -l -F ipofhost

Wenn wir die Fingerabdrücke vergleichen möchten, müssen wir den Inhalt unserer Datei "unknown_hosts" (nur den Eintrag für diesen Host) ablegen. Wir können ihn "ecdsa_file_from_known_hosts" nennen und dann wie folgt vergleichen:

ssh-keygen -lf ecdsa_file_to_compare
ssh-keygen -lf ecdsa_file_from_known_hosts

Und überprüfen Sie, ob die Show den gleichen Hash hat.

Natürlich stimmen sie nicht überein, deshalb habe ich die Warnmeldung erhalten (ssh überprüft diese Übereinstimmung intern). Wenn wir uns über die IP-Änderung sicher sind (damit wir keinen Man-in-the-Middle-Angriff erleiden), können wir einfach den Eintrag dieses Hosts in unserer Datei "unknown_hosts" löschen und beim nächsten Mal einen neuen Eintrag für es wird zu einer solchen Datei hinzugefügt.

9
gugol