Ich habe einen Server (nehmen wir an, seine IP ist abcd), der es Benutzern ermöglicht, sich über SSH anzumelden. Jetzt möchte ich die physische Maschine ändern und die IP beibehalten. Damit die neue Maschine weiterhin von einem Benutzer wie diesem aufgerufen werden kann
$ssh abcd
Das Problem besteht darin, dass bei jedem Anmeldeversuch eines Benutzers die folgende Fehlermeldung angezeigt wird: „SSH-Schlüssel stimmt nicht überein.“
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNUNG: DIE IDENTIFIZIERUNG DES REMOTE-HOSTS HAT SICH GEÄNDERT! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ES IST MÖGLICH, DASS JEMAND ETWAS BÖSE TUT! Es könnte sein, dass Sie gerade von jemandem belauscht werden (Man-in-the-Middle-Angriff)! Es ist auch möglich, dass der RSA-Hostschlüssel gerade geändert wurde. Der Fingerabdruck des vom Remote-Host gesendeten RSA-Schlüssels lautet 02:dc:c6:18:1b:34:b7:1d:fa:90:ab:e1:95:48:69:84. Bitte kontaktieren Sie Ihren Systemadministrator. Fügen Sie den korrekten Hostschlüssel in /home/user/.ssh/known_hosts hinzu, um diese Meldung zu entfernen. Fehlerhafter Schlüssel in /home/user/.ssh/known_hosts:37 Der RSA-Hostschlüssel für Alumni hat sich geändert und Sie haben eine strenge Überprüfung angefordert. Die Überprüfung des Hostschlüssels ist fehlgeschlagen.
Ich weiß, dass der Benutzer Zeile Nr. 37 aus der Datei ~/.ssh/known_hosts löschen kann und beim nächsten Mal eine Ja/Nein-Abfrage erhält. Ich möchte, dass der Benutzer nichts von dieser ganzen Sache mit dem Maschinenaustausch erfährt und nur eine Passwortabfrage erhält.
Wie geht das?
Antwort1
AlsEthabellerwähnt, können Sie die aktuellen Hostschlüssel auf den neuen Server kopieren.
Sie können Ihre Hostschlüssel finden, indem Sie Ihre sshd_config
Datei öffnen (auf meiner Ubuntu 12.04-Box ist es /etc/ssh/sshd_config
). Suchen Sie in der Konfigurationsdatei nach den HostKey
Einträgen. Diese Einträge geben an, wo sich die Hostschlüsseldateien befinden. Sie sollten in der Lage sein, diese Dateien auf den neuen Server zu kopieren und die des neuen Servers so zu aktualisieren, sshd_config
dass sie auf die kopierten Schlüssel verweisen (oder einfach die Dateien überschreiben, die bereits auf dem neuen Server vorhanden sind).
Beachten Sie auch diesen Abschnitt der sshd_config
Manpage, insbesondere den Teil zu Berechtigungen:
Gibt eine Datei an, die einen privaten Hostschlüssel enthält, der von SSH verwendet wird. Der Standardwert ist
/etc/ssh/ssh_host_key
für Protokollversion 1 und/etc/ssh/ssh_host_dsa_key
,/etc/ssh/ssh_host_ecdsa_key
und/etc/ssh/ssh_host_rsa_key
für Protokollversion 2. Beachten Sie, dass sshd(8) die Verwendung einer Datei ablehnt, wenn diese für Gruppen/alle zugänglich ist. Es ist möglich, mehrere Hostschlüsseldateien zu haben. „rsa1“-Schlüssel werden für Version 1 und „dsa“, „ecdsa“ oder „rsa“ für Version 2 des SSH-Protokolls verwendet.
Antwort2
Wenn Sie den ursprünglichen Hostschlüssel hätten, könnten Sie ihn wiederherstellen und der Fehler würde dadurch behoben.
Oder Sie können StrictHostKeyChecking in Ihrer SSHD-Konfigurationsdatei deaktivieren.
... Dies zu tun, ist jedoch eine furchtbar schreckliche Idee.
Wenn Sie es nur auf Client-Rechnern ausführen können ssh-keygen -R server.example.com
, ist das die beste Methode – denn wenn Sie die Host-Key-Prüfung deaktivieren, bedeutet das, dass Sie sagen: „Hey, greif mich an.“ Ich verstehe, dass Sie Unklarheiten wünschen, wenn sich Dinge ändern, aber Sicherheit sollte Vorrang vor der Verschleierung von Änderungen haben.
Antwort3
So kannst du es versuchen
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'
Beachten Sie, dass der obige Befehl fehlschlägt, wenn der Ordner .ssh noch nicht existiert. Außerdem ist es möglicherweise besser, beim Erstellen der Datei die minimal mögliche Berechtigung festzulegen (im Grunde nur Lesen und Schreiben für den Eigentümer). Hier ist ein erweiterter Befehl:
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'
Um mehr Licht auf dieses Problem zu werfen, müssen Sie diese Website aufrufen:Fehler beim Ändern des SSH-Hostschlüssels