Kopieren Sie SSH-Schlüssel von einem Server auf einen anderen Server

12

Ich habe einen Server (nehmen wir an, seine IP ist abcd), mit dem sich Benutzer über ssh anmelden können. Jetzt möchte ich die physische Maschine ändern und die IP-Adresse beibehalten. Damit ein Benutzer wie dieser weiterhin auf die neue Maschine zugreift

$ ssh abcd

Das Problem ist, dass jedes Mal, wenn ein Benutzer versucht, sich anzumelden, der folgende Fehler bei der Nichtübereinstimmung des SSH-Schlüssels angezeigt wird.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
@ WARNUNG: IDENTIFIZIERUNG DES FERNHOSTES GEÄNDERT! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
ES IST MÖGLICH, DASS JEMAND ETWAS SCHLECHTES TUT!
Jemand könnte Sie gerade belauschen (Man-in-the-Middle-Angriff)!
Es ist auch möglich, dass der RSA-Hostschlüssel gerade geändert wurde.
Der Fingerabdruck für den vom Remote-Host gesendeten RSA-Schlüssel 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 richtigen Hostschlüssel in /home/user/.ssh/known_hosts hinzu, um diese Nachricht zu entfernen.
Beleidigender Schlüssel in /home/user/.ssh/known_hosts:37
Der RSA-Hostschlüssel für Alumni hat sich geändert und Sie haben eine strikte Überprüfung angefordert.
Überprüfung des Hostschlüssels fehlgeschlagen.

Ich weiß, dass der Benutzer Zeile 37 aus der Datei ~ / .ssh / unknown_hosts löschen kann und beim nächsten Mal eine Ja / Nein-Aufforderung erhalten würde. Was ich möchte, ist, dass der Benutzer nicht über diese ganze Sache mit dem Austausch von Maschinen informiert wird und nur eine Aufforderung zur Eingabe des Passworts erhält.

Wie geht das?

Souvik Pal
quelle
3
Ist Ihnen bewusst, dass dies den ssheinzigen Schutz gegen Menschen bei mittleren Angriffen zunichte machen würde und dazu führen könnte, dass Sie Ihr Passwort direkt an den Angreifer anstatt an den beabsichtigten Computer senden? Sofern Sie nicht wissen, dass Sie für aktive Angriffe unverwundbar sind (z. B. befinden Sie sich im selben sicheren internen Netzwerk wie der Zielcomputer), wird das sshSicherheitsmodell zerstört .
David Schwartz
Ja. Beide Maschinen befinden sich in denselben internen Netzwerken. Sogar die Benutzer befinden sich im selben internen Netzwerk. Welche Möglichkeiten habe ich in dieser Situation?
Souvik Pal
Das ist nicht genug. Sie müssen sich im selben sicheren internen Netzwerk befinden. Das heißt, sie müssen absolut zu 100% darauf vertrauen, dass kein Gerät mit dem internen Netzwerk verbunden ist, das nicht 100% sicher ist, und sie müssen zu 100% jedem vertrauen, der die Kontrolle über diese Geräte hat oder ein Gerät an dieses Netzwerk anschließen kann. Mit anderen Worten, in fast jedem realistischen Szenario ist dies eine schlechte Idee.
David Schwartz
2
Es ist eine absolut vernünftige Sache. Ich repliziere die SSH-Serverschlüssel auf einen anderen Server für HA, damit beim Anmelden diese Fehler angezeigt werden. Außerdem bekomme ich beim Failover eine E-Mail.
Matt H
3
Ich stimme Matt zu. Wenn Sie die Kontrolle über beide Computer und damit den Eigentümer der Schlüssel haben, ist das Verschieben des Host-Schlüssels von einem Computer auf einen anderen innerhalb Ihrer Kontrolle KEIN Mann im mittleren Angriff oder Risiko. Wenn der verbindende Benutzer Ihrem Hostschlüssel vertraut, sollte dies keine Rolle spielen.
Ross

Antworten:

14

Wie von Ethabell erwähnt, können Sie die aktuellen Hostschlüssel auf den neuen Server kopieren.

Sie finden Ihre Host-Schlüssel, indem Sie Ihre sshd_configDatei öffnen (auf meiner Ubuntu 12.04-Box /etc/ssh/sshd_config). Suchen Sie in der Konfigurationsdatei nach den HostKeyEinträgen. Diese Einträge zeigen Ihnen, wo sich die Hostschlüsseldateien befinden. Sie sollten in der Lage sein, diese Dateien auf den neuen Server zu kopieren und die neuen Server 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 auf der sshd_configManpage, insbesondere den Teil über Berechtigungen:

Gibt eine Datei an, die einen von SSH verwendeten privaten Hostschlüssel enthält. Der Standard ist /etc/ssh/ssh_host_keyfür Protokollversion 1, und /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_ecdsa_keyund /etc/ssh/ssh_host_rsa_keyfür Protokollversion 2. Beachten Sie, dass sshd (8) wird sich weigern , eine Datei zu verwenden , wenn es Gruppe / Welt zugänglich. Es ist möglich, mehrere Hostschlüsseldateien zu haben. Für Version 1 werden die Tasten "rsa1" und für Version 2 des SSH-Protokolls "dsa", "ecdsa" oder "rsa" verwendet.

schwer
quelle
1

Wenn Sie den ursprünglichen Hostschlüssel hätten, könnten Sie ihn wiederherstellen, und dies würde den Fehler stoppen.

Oder Sie können StrictHostKeyChecking in Ihrer sshd-Konfigurationsdatei deaktivieren.

... Dies zu tun ist jedoch eine schreckliche, schreckliche Idee. Wenn es eine Möglichkeit gibt, nur ssh-keygen -R server.example.comauf Client-Computern zu arbeiten, ist dies der beste Weg - denn das Deaktivieren der Host-Schlüsselprüfung ist wie das Sagen von "Hey. Greife mich an." Ich möchte Dunkelheit, wenn sich die Dinge ändern, aber Sicherheit sollte Priorität 1 vor der Verschleierung von Änderungen haben.

Ethabelle
quelle
Können Sie erläutern, wie Hostschlüssel auf neueren Computern wiederhergestellt werden können?
Souvik Pal
1

Sie können es so 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 vorhanden ist. Darüber hinaus ist es möglicherweise besser, beim Erstellen der Datei eine möglichst geringe Berechtigung festzulegen (im Grunde nur Lese- und Schreibzugriff 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 über dieses Problem zu erfahren, müssen Sie diese Website aufrufen : SSH Host Key Change Error

Govind Karamta
quelle