
Gibt es eine Möglichkeit, meine ~/.ssh/known_hosts
Datei vorübergehend zu ignorieren?
mbp:~ alexus$ ssh 10.52.11.171
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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 a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /Users/alexus/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/alexus/.ssh/known_hosts:155
RSA host key for 10.52.11.171 has changed and you have requested strict checking.
Host key verification failed.
mbp:~ alexus$
NOTIZ:
.. durch ein paar Antworten/Kommentare merke ich, dass meine Frage ein wenig irreführend ist, daher ist sie kurzerwartetes Verhalten), also ist es normal (in meinem Fall)es gibt einen triftigen Grund, warum ich „Ignorieren“ sehen möchte)
Antwort1
Du kannst ssh -o StrictHostKeyChecking=no
die Überprüfung vorübergehend abschalten known_hosts
. Davon rate ich aber ab. Du solltest wirklich prüfen, warum sich der Host-Schlüssel geändert hat.
Eine weitere Möglichkeit besteht darin, einen speziellen Eintrag für den betreffenden Host hinzuzufügen ~/.ssh/config
. Dies kann sinnvoll sein, wenn Sie einen bestimmten Host haben, der bei jedem Neustart neue Hostschlüssel generiert und aus einem gültigen Grund mehrmals am Tag neu gestartet wird.
Host <your problematic host>
StrictHostKeyChecking no
Antwort2
Um Ihre bekannte Hosts-Datei in einer POSIX-Umgebung vollständig zu ignorieren, legen Sie die Optionen GlobalKnownHostsFile
und wie folgt fest :UserKnownHostsFile
/dev/null
ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null user@host
Wenn Sie diese StrictHostKeyChecking=no
Option aktivieren, können Sie eine Verbindung herstellen, aber SSHwird immer noch eine Warnung angezeigt:
ssh -o StrictHostKeyChecking=no user@host
Wie andere bereits angemerkt haben, ist es wahrscheinlich besser, das zugrunde liegende Problem anzugehen. Sie könnten erwägenSSH-Zertifikatauthentifizierungum beispielsweise Hosts zu verifizieren.
Antwort3
Wenn Sie den Server neu installiert haben und sich dadurch die Kennung geändert hat, sollten Sie einfach die angegebene Zeile 155 löschen /Users/alexus/.ssh/known_hosts
und fortfahren.
Wenn Sie zwischen verschiedenen privaten Netzwerken wechseln, sollten Sie stattdessen Hostnamen für die Verbindung verwenden, da der SSH-Client auch Schlüssel abhängig vom Hostnamen speichert. Fügen Sie Ihrem Folgendes hinzu /etc/hosts
:
10.52.11.171 server1
10.52.11.171 server2
und dann ssh server1
bei Verbindung mit Subnetz 1 und ssh server2
bei Verbindung mit Subnetz 2 verwenden. Auf diese Weise können beide Server unterschiedliche Hostschlüssel haben.
Antwort4
-o StrictHostKeyChecking=no
funktioniert nur, wenn der Host nicht bereits in der Datei known_hosts vorhanden ist.
Ich denke, es ist sauberer (keine Warnungen), wenn Sie erwarten, dass sich der Hostschlüssel ändert, vielleicht aufgrund von VM-Klonen, das Ignorieren dieser Art von Hosts wie folgt zu erzwingen:
# Handle possible SSH key changes
host_key=$(ssh-keyscan -t rsa ${host_ip})
grep "${host_key}" ~/.ssh/known_hosts >/dev/null || {
ssh-keygen -R ${host_ip}
echo ${host_key} >> ~/.ssh/known_hosts
}
# connect as normal way
ssh root@${host_ip} "hostname"