Überprüfen Sie den Fingerabdruck des vom Remote-Host gesendeten ECDSA-Schlüssels. [Closed]

24

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

$ 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 dem nicht so wäre, wie könnte ich den Fingerabdruck für den vom Remote-Host gesendeten ECDSA-Schlüssel überprüfen?

Ich habe es versucht 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 Eingang aus meiner known_hosts-Datei lösche und erneut versuche, ssh auszuführen, ist dies erfolgreich und es wird Folgendes mitgeteilt:

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

Worauf bezieht sich die sha256sum, um den Fingerabdruck zu erhalten, und wie kann ich ihn überprüfen?

Gugol
quelle
2
Ohne einen bekannten guten Wert können Sie ihn nicht überprüfen. Sie schreiben es nur auf, wenn Sie die SSHd zum ersten Mal starten und die Schlüssel generiert werden, und vergleichen Sie sie mit dem bekannten guten Wert.
Ich habe deine Frage bearbeitet. Diese Website akzeptiert nur Fragen zu einem professionellen Geschäftsumfeld. Fragen zu Heimnetzwerken sind hier häufig gestellt. Ich habe versucht, Ihre Frage mit meiner Bearbeitung zu speichern. Derzeit gibt es eine Abstimmung gegen Ihre Frage, um dies aus diesem Grund zu beenden.
Peter sagt, Monica
@ user186340 Es scheint wahr zu sein, dass "Sie es nur aufschreiben, wenn Sie die SSHd zum ersten Mal starten". Wenn Sie Zugriff auf den Computer haben, auf dem SSHd ausgeführt wird, können Sie /etc/ssh/ssh_host_ecdsa_key.pubden Fingerabdruck abrufen . Ich habe es gerade getan.
Jamadagni

Antworten:

12

Ein Fingerabdruck eines öffentlichen Schlüssels ist nicht der einfache Hash einer IP-Zeichenfolge.

Zum Abrufen eines öffentlichen Schlüssels eines Remote-Hosts können ssh-keyscan <IP>Sie die üblichen Tools zum Extrahieren des Fingerabdrucks verwenden ( ssh-keygen -lf <public_key_file>).

Abschließend können Sie mit dem aktuellen Fingerabdruck in Ihrer known_hostsDatei vergleichen ssh-keygen -l -F <domain_or_ip>.

Xavier Lucas
quelle
2
Ich bin verwirrt, warum ssh -oHostKeyAlgorithms='ecdsa-sha2-nistp256' [email protected]mir beim erstmaligen Verbinden über SSH und Erzwingen eines Ecdsa-Schlüssels ( ) ein 43-stelliger alphanumerischer Fingerabdruck ( ECDSA key fingerprint is SHA256:sBKcTiQ5V.... etc.) ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pubangezeigt wird.
William Turrell
1
@WilliamTurrell Dies liegt daran, dass Ihr Server eine ältere (wahrscheinlich Pre-OpenSSH 6.8) Version haben muss ssh-keygen(oder Ihr Server-Provider nicht mit der Zeit Schritt gehalten hat und statt des neuen SHA256 nur MD5-Hashes bereitstellt). Es gibt Abhilfen hier aufgelistet: superuser.com/questions/929566
SeldomNeedy
9

Ein bisschen ausführlicher : Da sich die Warnmeldung auf den Fingerabdruck des vom Remote-Host gesendeten ECDSA-Schlüssels bezieht, erfassen 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 in unserer known_hosts-Datei dieser öffentliche (ecdsa) Schlüssel ist:

ssh-keygen -l -F ipofhost

Wenn wir die Fingerabdrücke vergleichen möchten, müssen wir den Inhalt unserer known_hosts-Datei (nur den zu diesem Host gehörenden Eintrag) einfügen. Wir können sie ecdsa_file_from_known_hosts nennen und sie dann wie folgt vergleichen:

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

Und prü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 bei der Änderung der IP-Adresse sicher sind (so dass wir keinen Man-in-the-Middle-Angriff erleiden), können wir einfach den Eintrag dieses Hosts in unserer Datei known_hosts löschen und das nächste Mal einen neuen Eintrag für ssh hinzufügen es wird zu einer solchen Datei hinzugefügt.

Gugol
quelle