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?
ssh
fingerprint
Gugol
quelle
quelle
/etc/ssh/ssh_host_ecdsa_key.pub
den Fingerabdruck abrufen . Ich habe es gerade getan.Antworten:
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_hosts
Datei vergleichenssh-keygen -l -F <domain_or_ip>
.quelle
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.pub
angezeigt wird.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/929566Ein 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:
Dann können wir herausfinden, wo in unserer known_hosts-Datei dieser öffentliche (ecdsa) Schlüssel ist:
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:
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.
quelle