Dies ist ein einfaches Problem, mit dem wir alle konfrontiert sind und das wir wahrscheinlich manuell lösen, ohne uns viel Gedanken zu machen.
Wenn sich Server ändern, erneut bereitgestellt oder IP-Adressen neu zugewiesen werden, erhalten wir die unten stehende SSH-Host-Bestätigungsnachricht. Ich bin daran interessiert, den Workflow zu optimieren, um diese SSH-Identifikationsfehler zu beheben.
In Anbetracht der folgenden Meldung vi /root/.ssh/known_hosts +434
entferne ich normalerweise und ( dd
) die fehlerhafte Zeile.
Ich habe gesehen, dass Entwickler / Benutzer in anderen Organisationen ihre gesamte known_hosts
Datei aus Frustration löschen, als sie diese Nachricht sahen. Ich gehe zwar nicht so weit, aber ich weiß, dass es eine elegantere Art gibt, damit umzugehen.
Tipps?
[root@xt ~]# ssh las-db1
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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
ed:86:a2:c4:cd:9b:c5:7a:b1:2b:cc:42:15:76:8c:56.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:434
RSA host key for las-db1 has changed and you have requested strict checking.
Host key verification failed.
quelle
Antworten:
Mit dem
ssh-keygen
Befehl können Sie bestimmte Einträge nach Host entfernen:Wenn Sie diesen Befehl nicht haben, können Sie immer sed verwenden:
quelle
ssh-keygen
Befehl nicht bekannt . Gut!/etc/ssh/known_hosts
Datei in Ihrem Netzwerk mit den entsprechenden Hostschlüsseln (verwaltet mit Puppet usw.) oder mit Ihrer persönlichen ~ / .ssh / known_hosts-Datei (dazu könnenssh-keyscan
Sie eine bekannte gute / sichere Datei überfliegen) Verbindung). Vorbehaltlich dieser (und vorausgesetzt, Sie kümmern sich überhaupt nicht um Sicherheit)UserKnownHostsFile=/dev/null
undStrictHostKeyChecking=no
in Ihrem~/.ssh/config file
(oder übergeben Sie die Optionen mit ssh-o
)Als Marionettenbenutzer kann ich dieses Problem lösen, indem ich auf meinem Marionettenserver meine SSH-Hostschlüssel sammle und sie auf allen meinen Systemen veröffentliche, die SSH-Verbindungen herstellen.
Auf diese Weise muss ich mich nicht darum kümmern, sie zu entfernen. In neunundneunzig Prozent der Fälle hat Puppet die Schlüssel für mich ausgeführt und aktualisiert, da meine Agenten alle dreißig Minuten ausgeführt werden. Die Ausnahmen für mich sind sehr selten, und daher macht mir eine schnelle Bearbeitung der systemweiten known_hosts nichts aus, wenn ich nicht bereit bin zu warten.
quelle
Ich möchte einen Vorschlag hinzufügen, der Ihnen in ganz bestimmten Fällen helfen kann, in denen die Sicherheit weniger wichtig ist.
Ich habe eine Laborumgebung mit Computern, die häufig neu installiert werden. Jedes Mal, wenn dies passiert, werden neue Host-Schlüssel generiert (ich könnte den Host-Schlüssel wahrscheinlich irgendwo speichern und im Post-Install-Skript festlegen).
Da die Sicherheit in dieser Testumgebung für mich kein Problem darstellt und sich die Schlüssel so oft ändern, enthält meine .ssh / config-Datei Folgendes:
Dies stellt sicher, dass das Herstellen einer Verbindung zu meinen Laborgeräten nie wieder zu diesem Fehler führt und mein ssh-Client nur eine Verbindung herstellt, ohne den Hostschlüssel zu überprüfen.
Dies ist etwas, das Sie nur tun sollten, wenn die Sicherheit Sie überhaupt nicht interessiert, da Sie dadurch für einen Man-in-the-Middle-Angriff verwundbar sind.
quelle
Gemäß der Release-Information zu openssh 5.6 müssen Sie keine Hosts-Schlüssel mehr verwenden:
Warnung : Ich habe noch nie von jemandem gehört, der diese Funktion in der Produktion einsetzt. Die Verwendung erfolgt auf eigenes Risiko (aber ich glaube, dass OpenSh-Entwickler paranoid genug sind, um eine solche Killer-Funktion nicht ohne viel Testen und Code-Auditing freizugeben).
quelle
SSHFP DNS ResourceRecord kann helfen, je nachdem, wie viel Ihr ssh-Client davon profitiert. Speichern Sie dort oben alle Fingerabdrücke Ihres öffentlichen SSH-Schlüssels mit dem Hostnamen.
Implementieren Sie zuvor DNSSEC oder DNS über SSL.
http://www.ietf.org/rfc/rfc4255.txt
FreeIPA.org verwaltet Host- und Benutzerschlüssel sowie PKI-Zertifikate. Außerdem werden automatisch SSHFP-DNS-Einträge hochgeladen, wenn neue Schlüssel erstellt werden.
http://docs.fedoraproject.org/en-US/Fedora/17/html/FreeIPA_Guide/host-keys.html
quelle