Was im Hintergrund passiert, wenn Sie sich zum ersten Mal mit ssh mit einem Server verbinden
Wenn Sie zum ersten Mal eine Verbindung zu einem Server herstellen, fordert der Server Sie auf, zu bestätigen, dass Sie mit dem richtigen System verbunden sind. Das folgende Beispiel verwendet den ssh-Befehl, um eine Verbindung zu einem Remote-Host namens host03 herzustellen:
# ssh host03 The authenticity of host 'host03 (192.0.2.103)' can’t be established. ECDSA key fingerprint is ... Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'host03,192.0.2.103' (ECDSA) to the list of known hosts.
Die Host-Validierung ist eine der Hauptfunktionen von OpenSSH. Der Befehl überprüft, ob Sie sich mit dem Host verbinden, von dem Sie glauben, dass Sie eine Verbindung herstellen. Wenn Sie yes eingeben, hängt der Client den öffentlichen Hostschlüssel des Servers an die Datei ~/.ssh/known_hosts des Benutzers an und erstellt bei Bedarf das Verzeichnis ~/.ssh. Wenn Sie sich das nächste Mal mit dem Remote-Server verbinden, vergleicht der Client diesen Schlüssel mit dem Schlüssel, den der Server bereitstellt. Wenn die Schlüssel übereinstimmen, werden Sie nicht gefragt, ob Sie die Verbindung fortsetzen möchten.
Was verursacht den Fehler „Hostschlüsselüberprüfung fehlgeschlagen“
Wenn jemand versucht, Sie dazu zu bringen, sich bei seinem Computer anzumelden, damit er Ihre SSH-Sitzung ausspionieren kann, erhalten Sie eine Warnung ähnlich der folgenden:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is dd:cf:50:31:7a:78:93:13:dd:99:67:c2:a2:19:22:13. Please contact your system administrator. Add correct host key in /home/user01/.ssh/known_hosts to get rid of this message. Offending key in /home/lcz/.ssh/known_hosts:7 RSA host key for 192.168.219.149 has changed and you have requested strict checking. Host key verification failed.
Wenn Sie jemals eine solche Warnung erhalten, halten Sie an und prüfen Sie, ob es einen Grund für die Änderung des Hostschlüssels des Remote-Servers gibt (z. B. wenn SSH aktualisiert wurde oder der Server selbst aktualisiert wurde). Wenn es keinen triftigen Grund für eine Änderung des Hostschlüssels gibt, versuchen Sie nicht, sich mit diesem Computer zu verbinden, bis Sie das Problem gelöst haben.
So beheben Sie den Fehler „Verifizierung des Hostschlüssels fehlgeschlagen“
Methode 1 – alten Schlüssel manuell entfernen
1. Auf dem Quellserver werden die alten Schlüssel in der Datei ~/.ssh/known_hosts gespeichert .
2. Nur wenn dieses Ereignis legitim ist und nur wenn genau bekannt ist, warum der SSH-Server einen anderen Schlüssel präsentiert, bearbeiten Sie die Datei known_hosts und entfernen Sie den nicht mehr gültigen Schlüsseleintrag. Jeder Benutzer auf dem Client/Quellserver hat seine eigenen known_hosts in seinem Home-Verzeichnis, entfernen Sie einfach den Eintrag in der Datei eines bestimmten Benutzers für den Zielserver. Zum Beispiel:
– Wenn root per ssh auf den Server zugreifen möchte, entfernen Sie einfach den Eintrag in /root/.ssh/known_hosts Datei ist in Ordnung.
– Wenn Testuser ssh zum Server wollen, dann entfernen Sie den Eintrag in der Datei /home/testuser/.ssh/known_hosts .
3. In meinem Fall entferne ich den Schlüssel (rot hervorgehoben) für den Zielserver 192.168.219.149 aus der Datei /home/user01/.ssh/known_hosts.
# vim /home/user01/.ssh/known_hosts 172.104.9.113 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLrY91bQOihgFZQ2Ay9KiBG0rg51/YxJAK7dvAIopRaWzFEEis3fQJiYZNLzLgQtlz6pIe2tj9m/Za33W6WirN8= 192.168.219.148 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCrY/m16MdFt/Ym51Cc7kxZW3R2pcHV1jlOclv6sXix1UhMuPdtoboj+b7+NLlTcjfrUccL+1bkg8EblYucymeU= 192.168.219.149 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCrY/m16MdFt/Ym51Cc7kxZW3R2pcHV1jlOclv6sXix1UhMuPdtoboj+b7+NLlTcjfrUccL+1bkg8EblYucymeU=
Methode 2 – Entfernen des alten Schlüssels mit dem Befehl ssh-keygen
Sie können den alten Schlüssel auch mit dem Befehl ssh-keygen entfernen. Die Syntax zur Verwendung des Befehls ist unten.
$ ssh-keygen -R [hostname|IP address]
Beispielsweise verwenden wir in unserem Fall die IP-Adresse, um den alten Schlüssel zu löschen.
$ ssh-keygen -R 192.168.219.149 # Host 192.168.219.149 found: line 3 /home/user01/.ssh/known_hosts updated. Original contents retained as /home/user01/.ssh/known_hosts.oldHinweis :Wenn Sie nicht genau wissen, warum der SSH-Server einen anderen Schlüssel präsentiert, ist entweder Ihre known_hosts-Datei falsch, oder jemand muss diesen Server und die Netzwerkverbindungen untersuchen, um den Grund für die unerwartete Änderung zu verstehen.
Bestätigen
Wenn der Remote-Server nach einer Bestätigung zum Hinzufügen des neuen Schlüssels zur Datei ~/.ssh/known_host fragt, bestätigt dies, dass Sie den alten Schlüssel erfolgreich entfernt haben. Wenn Sie die Anfrage bestätigen, fügt die Quellmaschine den neuen Schlüssel in die Datei ~/.ssh/known_host ein.
$ ssh [email protected] The authenticity of host '192.168.219.149 (192.168.219.149)' can't be established. ECDSA key fingerprint is SHA256:V+iGp3gwSlnpbtYv4Niq6tcMMSZivSnYWQIaJnUvHb4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.219.149' (ECDSA) to the list of known hosts.