Ich habe /etc/ssh/sshd_config
mit Puppet eine neue Version auf einem Ubuntu 12.04-Testserver eingeführt. Die Konfiguration war genau die gleiche wie die vorherige Konfiguration, außer dass die folgende Zeile entfernt wurde:
HostKey /etc/ssh/ssh_host_ecdsa_key
Ich habe festgestellt, dass beim Versuch, eine Verbindung zur Box herzustellen , viele ähnliche, aber unterschiedliche Fehler aufgetreten sind, z. B .: "Der RSA- Hostschlüssel für % hostname% hat sich geändert, und der Schlüssel für die entsprechende IP-Adresse % ipaddress% ist unverändert. ""
Ich nahm an, dass dies daran lag, dass mein Computer zuvor standardmäßig den ECDSA-Schlüssel verwendete und dieser jetzt nicht verfügbar war. Also habe ich diese Zeile wieder zu sshd_config
SSH hinzugefügt und SSH neu gestartet.
Das Problem wurde dadurch nicht vollständig gelöst, und seitdem habe ich ständig Probleme. Ich kann mich mehrmals problemlos mit dem Server verbinden, vielleicht sogar mehrere Tage hintereinander. Dann erhalte ich plötzlich Fehler, dass sich der Hostschlüssel geändert hat und der Server meinen öffentlichen Schlüssel nicht mehr zur Authentifizierung akzeptiert.
Es scheint immer so, dass ich, sobald ich eine Weile damit herumgespielt und von einem anderen Ort aus eine Verbindung hergestellt habe, plötzlich wieder eine Verbindung mit meinem öffentlichen Schlüssel herstellen kann und nicht mehr den Fehler über einen möglichen Mann in der Mitte erhalte Attacke.
Ich habe vor einigen Tagen versucht, alle 3 Hostschlüssel neu zu generieren (habe sie entfernt und ausgeführt, dpkg-reconfigure openssh-server
wodurch sie neu generiert wurden). Wie erwartet musste ich die alten Schlüssel entfernen und die neuen akzeptieren, bevor ich eine Verbindung herstellen konnte. Ich dachte, vielleicht wurde es damals behoben, aber das Problem ist jetzt zurück.
/etc/ssh/
Seit ich sie zuletzt neu generiert habe, hat sich an keinem der Hostschlüssel etwas geändert. Was kann also dazu führen, dass ich häufig keine Verbindung herstellen kann, mein öffentlicher Schlüssel nicht funktioniert, dann den neuen Schlüssel akzeptiert und die Dinge wieder einwandfrei funktionieren für eine Weile?
Wenn die Dinge nicht funktionieren (wenn der Fehler beim Ändern des Hostschlüssels auftritt und der Server meinen öffentlichen Schlüssel nicht mehr akzeptiert), wird nichts auf den Server geschrieben /var/log/auth.log
. Dies lässt mich denken, dass es manchmal irgendwie auf einen anderen Computer trifft, aber ich weiß auch nicht, wie das möglich ist, da der DNS-Eintrag korrekt ist und immer dieselbe IP-Adresse zurückgibt.
Antworten:
Es gibt drei häufige Gründe, warum Sie diese Nachricht erhalten würden.
In grober Reihenfolge der Wahrscheinlichkeit sind sie:
Sie haben die Hostschlüssel selbst geändert und sie auf Ihren Clientcomputern nicht gelöscht oder aktualisiert.
Dies ist die häufigste Situation. Prüfen Sie die Schlüsseldateien und seien Sie absolut sicher, dass sie sich nicht geändert haben.
Sie haben Ihre SSH-Konfiguration geändert, um einen anderen Schlüsseltyp als zuvor anzuzeigen (oder anzufordern).
zB wollten Sie früher RSA- oder DSA-Schlüssel, jetzt verwenden Sie ECDSA - das ist eine "Schlüsseländerung".
Wenn dies der Fall ist, überprüfen und akzeptieren Sie die neuen Schlüssel (oder wenn dies nicht Ihren Wünschen entspricht, machen Sie die Änderung rückgängig).
(Es hört sich so an, als wären Sie in Situation 2 - Machen Sie Ihre Änderungen rückgängig, starten Sie sshd neu und stellen Sie sicher, dass die Dinge wie erwartet funktionieren. Wenn Sie die neuen Schlüssel nirgendwo akzeptiert haben, sollte der Fehler behoben werden, wenn Sie die Änderung rückgängig machen.)
JEMAND TUT ETWAS SCHLECHTES
Der Man-in-the-Middle-Angriff, vor dem SSH Sie warnt, hat seinen hässlichen Kopf aufgerichtet. Jemand versucht aktiv, Ihre Kommunikation abzufangen, um Ihren privaten Schlüssel zu stehlen oder etwas anderes zu tun, das Sie mit ziemlicher Sicherheit nicht möchten.
Wenn Sie 1 eliminiert haben und sicher sind, dass Sie 2 nicht gemacht haben, müssen Sie 3 annehmen, bis Sie das Gegenteil beweisen können. Das heißt, nicht anmelden . - Die gesamte SSH-Sicherheit der Welt hilft nicht, wenn Benutzer das große riesige Warnbanner ignorieren und ihre Schlüssel an Angreifer übergeben.
Untersuchen Sie den Kanal zwischen Ihnen und Ihrem Server, überprüfen Sie die Verbindungsprotokolle des Servers (von einem bekanntermaßen guten Terminal), während Sie versuchen, sich anzumelden usw. - hier gibt es so viele Möglichkeiten, einen Angriff auszuführen, dass ich nicht alle auflisten kann mögliche Gegenmaßnahmen und Erkennungsstrategien, aber die Leute von IT Security hätten sicherlich einige Ideen.
quelle
ssh-keyscan
einigen der betroffenen Clientcomputer und überprüfen Sie die Serverprotokolle. Beachten Sie auch, dass wenn Sie etwas Ungewöhnliches tun, wie das Teilen Ihrerknown_hosts
Datei zwischen verschiedenen Versionen des SSH-Clients, dies eine mögliche Ursache für diese Seltsamkeit sein könnte (ich habe so etwas noch nie gemacht, daher kann ich nicht sicher sagen ... )wenn möglich / zum Testen / Debuggen:
zum Beispiel:
quelle