Meine Datei `~/.ssh/known_hosts` vorübergehend ignorieren?

Meine Datei `~/.ssh/known_hosts` vorübergehend ignorieren?

Gibt es eine Möglichkeit, meine ~/.ssh/known_hostsDatei 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=nodie Ü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 GlobalKnownHostsFileund wie folgt fest :UserKnownHostsFile/dev/null

ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null user@host

Wenn Sie diese StrictHostKeyChecking=noOption 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_hostsund 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 server1bei Verbindung mit Subnetz 1 und ssh server2bei Verbindung mit Subnetz 2 verwenden. Auf diese Weise können beide Server unterschiedliche Hostschlüssel haben.

Antwort4

-o StrictHostKeyChecking=nofunktioniert 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"

verwandte Informationen