Wie kann ich die Hostüberprüfung von SSH für bekannte Hosts vermeiden?


169

Ich erhalte jedes Mal die folgende Aufforderung, wenn ich versuche, einen Server mit SSH zu verbinden. Ich tippe "yes", aber gibt es eine Möglichkeit, dies zu ändern?

The authenticity of host '111.222.333.444 (111.222.333.444)' can't be established.
RSA key fingerprint is f3:cf:58:ae:71:0b:c8:04:6f:34:a3:b2:e4:1e:0c:8b.
Are you sure you want to continue connecting (yes/no)? 

7
/ dev / null gibt es für diejenigen, die denken, sie seien immun gegen Angriffe in der Mitte :)
Tim Post

1
Schlimmster Teil: Tippey , um etwas Zeit zu sparen, und es klagt: Please type 'yes' or 'no': (hmph)
ADTC

Antworten:


234

Verwenden Sie die -oOption,

ssh -o "StrictHostKeyChecking no" user@host

1
Möglicherweise möchten Sie eine alternative Identitätsdatei mit der
Markierung

Was nützt die Verwendung einer alternativen Identitätsdatei? Ich meine, wenn Sie sich mit einem kompromittierten Host verbinden, welchen Unterschied macht es, wie Sie sich authentifizieren - es ist nicht so, dass der kompromittierte Host auch Ihren Schlüssel stehlen kann.
Dagelf

102

Fügen Sie die folgenden Zeilen an den Anfang von /etc/ssh/ssh_config... ein

Host 192.168.0.*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

Optionen:

  • Das Host-Subnetz kann *den uneingeschränkten Zugriff auf alle IP-Adressen ermöglichen.
  • Bearbeiten Sie /etc/ssh/ssh_configfür die globale Konfiguration oder ~/.ssh/configfür die benutzerspezifische Konfiguration.

Siehe http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html


2
Schade, dass ich dich nur einmal unterstützen kann. Das Setzen von KnownHosts auf / dev / null ist genial.
J0hnG4lt

1
Du bist der Klügste.
Darth Egregious

30
Ha! Sag es meiner Frau.
JimFred

30

Sie sollten dies nur erhalten, wenn Sie sich zum ersten Mal mit einem neuen Host verbinden. Nachdem Sie geantwortet haben, wird yesder Host in gespeichert ~/.ssh/known_hostsund Sie werden beim nächsten Verbindungsaufbau nicht mehr dazu aufgefordert.

Beachten Sie, dass ~/.ssh/known_hostsSie jedes Mal, wenn Sie eine Verbindung herstellen, dazu aufgefordert werden , wenn aus irgendeinem Grund keine Informationen vorliegen (z. B. Berechtigungsprobleme).


7
Die Frage ist, gibt es trotzdem die Aufforderung zu vermeiden?
Shantanuo

Ich habe versucht, "CheckHostIP no" zur Datei / etc / ssh / ssh_config hinzuzufügen. Aber es scheint nicht zu funktionieren
Shantanuo

2
sudo chown -R Benutzer: Benutzer .ssh; sudo chmod 700 .ssh; sudo chmod -R 600 .ssh /; ssh-keygen -R $ hostname und reconnect, das ALLE Probleme lösen und NUR je wieder auffordern sollte, wenn ein ssk_Hostkey mit | verpfuscht ist geändert oder Sie sind Opfer einer MITM.
linuxdev2013

1
es heißt "jedes Mal", also ist diese Antwort super angemessen
tarikakyol

11

Die beste Möglichkeit (da die Sicherheit nicht beeinträchtigt wird) besteht darin, von einem Client aus eine einmalige Verbindung zu allen Computern herzustellen (Sie werden jedes Mal dazu aufgefordert, immer mit "Ja" zu antworten). Wie in der anderen Antwort erwähnt, werden die Schlüssel dann in ~ / .ssh / known_hosts gespeichert. Kopieren Sie diese Datei dann auf jeden Client-Computer, von dem Sie später eine Verbindung herstellen möchten (möglicherweise für jedes von Ihnen verwendete Benutzerkonto). Dann "kennen" alle diese Konten die Computer, daher keine Aufforderung.

Der Vorteil gegenüber dem Deaktivieren der Eingabeaufforderung ist, dass SSH tatsächlich prüfen kann, ob ein MITM-Angriff vorliegt.


1
Wenn Sie jedoch häufig über Weiterleitungsverbindungen sshen, möchten Sie Folgendes zu / etc / ssh / ssh_config hinzufügen: Host 127.0.0.1 NoHostAuthenticationForLocalhost yes
Dagelf

1

Wenn Sie die Bestätigung anstelle der Authentifizierung deaktivieren möchten, können Sie die folgende Option verwenden: "-o CheckHostIP = no"

ssh -i sergeys_rsa_key.pem -o CheckHostIP=no brin@8.8.8.8

Das OP hat bereits die gleiche Antwort erhalten und akzeptiert.
Ayan

0

Dies liegt wahrscheinlich daran, dass sich Ihr SSH-Schlüsselserver geändert hat, da Server-IP oder -Domäne identisch sind, der SSH-Schlüssel jedoch nicht übereinstimmt.

Sie müssen den gespeicherten Schlüssel entfernen /home/$user/.ssh/known_hosts, um diese Meldung zu vermeiden.

Ich habe das Problem behoben, dass alle Schlüssel in dieser Datei entfernt wurden, sodass für diesen Domainnamen ein neues Token erstellt wurde.


1
Ein geänderter Schlüssel erzeugt eine viel hässlichere Nachricht mit einer Schachtel mit Zeichen und WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! und IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!in Großbuchstaben . Die Nachricht in der Frage wird nur angezeigt, wenn noch kein Eintrag in vorhanden ist known_hosts.
Dave_thompson_085

-1

Überprüfen Sie die Berechtigungen für Ihre ~/.ssh/known_hostsDatei. Meins war falsch, als ich dieses Problem bekam. Ich habe es behoben mit:

chmod 0600 ~/.ssh/known_hosts
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.