Ich habe in den letzten Wochen mehrere virtuelle Maschinen gebaut. Das Problem ist, das .ssh/known_hosts
mich der Mann in der Mitte warnt. Dies liegt daran, dass der IP-Adresse der virtuellen Maschine ein anderer Fingerabdruck zugeordnet ist.
In der .ssh/known_hosts
Datei finde ich jedoch keinen Datensatz in Bezug auf die IP, sondern nur zwei bizarre, schlüsselähnliche Zeichenfolgen und "ssh-rsa".
Hat jemand eine Idee, wie man den alten Schlüssel entfernt known_hosts
?
ssh
hosts
openssh
man-in-the-middle
Adam Matan
quelle
quelle
HashKnownHosts yes
gesetzt.Antworten:
Ändert die Datei ~ / .ssh / known_hosts: 6 und entfernt die 6. Zeile.
Meiner Meinung nach
ssh-keygen -R
ist using eine bessere Lösung für einen OpenSSH-Poweruser, während Ihr regulärer Linux-Administrator mit der oben beschriebenen Methode besser dafür sorgen würde, dass seine / ihre Sed Skills auf dem neuesten Stand bleiben.quelle
/etc/sudoers
ohne redigierenvisudo
. Wenn Sie Ihresed
Fähigkeiten verbessern möchten, können Sie dies tun, ohne Ihr System zu beschädigen.ssh-keygen -R
undsed -i {line}d
sind ziemlich "offiziell", und beide werden auf absehbare Zeit funktionieren. Util ssh-keygen ermöglicht das Entfernen nach Zeilennummer. Beide sind vollkommen akzeptabel (da Zeilennummern häufig einfacher zu handhaben und weniger fehleranfällig sind als der Umgang mit modernen Hostnamen in Rechenzentren).man ssh-keygen
Erwähnt auch, dassssh-keygen -R hostname
Sie gerade gesagt haben, dassssh-keygen -R
kein Hostname angegeben wurde, und dass Sie nicht erklärt haben, was Sie damit meinen.Die einfachste Lösung ist:
ssh erstellt die Datei erneut, aber Sie verlieren die Schlüsselüberprüfung für andere Hosts!
Oder Sie können verwenden:
Oder die ssh "man-in-the-middle" -Nachricht sollte angeben, in welcher Zeile der Datei known_hosts sich der fehlerhafte Fingerabdruck befindet. Bearbeiten Sie die Datei, springen Sie zu dieser Zeile und löschen Sie sie.
quelle
ssh-keygen -R hostname
wird auch funktionieren.ssh-keygen
Option wurde aufgrund eines Kommentars hinzugefügt, jedoch ohne Erklärung. Ich denke nicht, dass diese Antwort so viele positive Stimmen verdient.Dafür gibt es einen ssh-keygen switch (
-R
).man ssh-keygen
liest:quelle
[localhost]:port
die Klammern verwenden, weil ich einen benutzerdefinierten Port verwendet habe, denke ich = /. Wie andere bereits gesagt haben, würde ich für meine Entwicklung von Transienten- / Testsystemen auch den Ansatz ohne SSH-Schlüsselprüfung verwenden.ssh-keyscan -H my.ssh.server.example.com >> ~/.ssh/known_hosts;
Die Warnung teilt Ihnen die genaue Zeile in der bekannten Hosts-Datei mit.
Hier ist ein Beispiel:
Sehen Sie den
/home/user/.ssh/known_hosts:6
Teil? Es gibt die Datei- und Zeilennummer an.quelle
Sie müssen den folgenden Befehl ausführen, um dieses Problem zu beheben. Öffnen Sie das Terminal und geben Sie den folgenden Befehl ein:
Ersetzen Sie für alle folgenden Beispiele einfach den Wert nach -R
quelle
ssh-keygen -R
als alle bisherigen Antworten. Es zeigt anhand eines Beispiels genau, wonach Sie schreiben können-R
. Diese Antwort lohnt sich also, auch wenn es sich nicht um eine völlig neue Antwort handelt.Sie können ssh auch anweisen, die Datei known_hosts nicht mit den Flags UserKnownHostsFile und StrictHostKeyChecking zu überprüfen.
Zum Beispiel:
Zur Vereinfachung der Verwendung können Sie Folgendes aliasen:
Jetzt können Sie einfach fett schreiben, wenn Sie sicher sind, dass Sie dem Zertifikat des Servers vertrauen.
quelle
~/.ssh/known_hosts
um auf dem neuesten Stand zu bleiben ? Warum nicht einfach weitermachen und nutzentelnet
? "wann immer Sie sicher sind" - wenn Sie sich jemals sicher sind, dann haben Sie keine Ahnung, was ein MITM-Angriff ist, und Sie sollten wahrscheinlich einige Zeit damit verbringen, gute Literatur zu lesen.Alle Antworten sind gut, aber für echte SSH-Profis fehlen Informationen zum Entfernen der SSH-Signatur mit Portnummer.
Einfacher Befehl zum Entfernen der SSH-Hostsignatur:
Komplexes Entfernen des SSH-Schlüssels, z. B. Sie stellen eine Verbindung zu SSH über nicht standardmäßigen Port 222 her:
und Sie erhalten eine Warnung, und um diese zu entfernen, müssen Sie die Doppelpunkt-Portnummer in eckigen Klammern verwenden:
Hoffe, dies hilft nicht-standardmäßigen Konfigurationsbenutzern.
quelle
Hier ist eine Methode mit dem Ex-Editor:
Dabei steht 6 für die in der Warnmeldung angegebene Zeilennummer. Wie dieser:
Im Allgemeinen ist es ratsam , verwenden
ex
, um die Dateien nicht interaktiv zu bearbeiten , stattsed
, was mehr ist ein S tream ED itor und seine-i
Parameter, der eine Nicht-Standard - FreeBSD - Erweiterung ist.quelle
Der Eintrag für den Hostnamen oder die IP sollte in der ersten Spalte sein. In der Warnung sollte auch eine Zeilennummer aufgeführt sein, in der der fehlerhafte Schlüssel liegt.
quelle
Sie können auch eine einzelne Zeile von bekannten Hosts mit z. B. rmknownhost 111 entfernen (111 ist die zu entfernende Zeile):
Speichern Sie dies als
rmknownhost
in einem Ordner von IhremPATH
.quelle
sshdel() { sed -i "${@}d" ~/.ssh/known_hosts; }
und rufen Sie es mit aufsshdel [line number]
. Kein Rubin, keine Binärdatei, keine Sorgen.Es ist eine Textdatei. Sie können die betreffende Zeile einfach mit vi (m) bearbeiten, löschen (dd) und die Datei speichern (wq). Wenn es jedoch einen bestimmten Befehl zum Entfernen eines Hosts gibt, ist dies wahrscheinlich die sicherste Methode.
quelle