2009-10-31 5 views
37

Ich arbeite in einem Netzwerk, in dem sich die Systeme bei einer IP-Adresse häufig ändern. Sie werden auf und von der Workbench verschoben und DHCP bestimmt die IP, die sie erhalten.SSH unter Linux: Deaktivieren der Host-Schlüsselprüfung für Hosts im lokalen Subnetz (known_hosts)

Es scheint nicht direkt, wie Host Caching/Prüfung zu deaktivieren, so dass ich ~/.ssh/known_hosts nicht jedes Mal, wenn ich eine Verbindung zu einem System verbinden muss.

Ich interessiere mich nicht für die Host-Authentizität, sie sind alle auf dem 10.x.x.x Netzwerk-Segment und ich bin relativ sicher, dass niemand MITM'ing mich ist.

Gibt es einen "richtigen" Weg, dies zu tun? Es ist mir egal, ob es mich warnt, aber es ist nervig, mich anzuhalten und mich dazu zu bringen, meinen known_hosts-Eintrag für diese IP zu löschen, und in diesem Szenario gibt es keine Sicherheit, weil ich selten mehr als ein- oder zweimal mit den Systemen verbunden bin und dann wird die IP einem anderen System gegeben.

Ich schaute in der ssh_config-Datei und sah, dass ich Gruppen einrichten kann, so dass die Sicherheit der Verbindung zu externen Maschinen beibehalten werden konnte und ich konnte nur auf lokale Adressen überprüfen ignorieren. Dies wäre optimal.

Aus der Suche habe ich einige sehr starke Meinungen zu der Sache gefunden, von "Mach dich nicht damit, es ist für die Sicherheit, nur damit umgehen" zu "Dies ist die dümmste Sache, die ich jemals zu tun hatte mit, ich will es einfach ausschalten "... ich bin irgendwo in der Mitte. Ich möchte nur meine Arbeit machen können, ohne alle paar Minuten eine Adresse aus der Datei löschen zu müssen.

Danke.

Antwort

9

Sie verwenden OpenSSH Angenommen, ich glaube, Sie

CheckHostIP no 

Option kann Host-IPs von einer Prüfung in known_hosts zu verhindern. Aus der Manpage:

CheckHostIP

Wenn dieser Flag gesetzt ist 'Ja', ssh (1) wird die Host-IP-Adresse in der Datei known_hosts zusätzlich überprüfen. Mit dieser kann ssh erkennen, ob sich ein Hostschlüssel aufgrund von DNS-Spoofing geändert hat. Wenn die Option auf 'Nein' gesetzt ist, wird die Prüfung nicht ausgeführt. Der Standardwert ist "Ja".

+0

ich mit Host 10.0.0 einen Abschnitt der Unterseite der Konfigurationsdatei hinzugefügt haben. * Und unten, dass ich setzen CheckHostIP kein Weißt du, ob ich alle anderen Einstellungen dort einfügen muss oder ob dies zusätzlich zum * Host oben ist? Ich muss warten, bis ich mich in ein System anmelden, das eine "verwendete" IP-Adresse ausgestellt wurde, um sicherzustellen, dass diese Änderung funktioniert. Ich werde deine Antwort akzeptieren, wenn das funktioniert. Danke. – C4colo

+0

Es scheint nicht so, dass der Trick 100% ... nicht sicher ist, warum, ich muss ein bisschen mehr damit spielen und sehen, ob ich es tun kann, was ich will. – C4colo

+0

Was meinst du mit "100%"? Funktioniert es manchmal, aber nicht andere? –

80

Dies ist die Konfiguration, die ich für unsere sich ständig verändernden EC2-Hosts verwenden:

[email protected]:~$ cat ~/.ssh/config 
Host *amazonaws.com 
     IdentityFile ~/.ssh/keypair1-openssh 
     IdentityFile ~/.ssh/keypair2-openssh 
     User ubuntu 
     StrictHostKeyChecking no 
     UserKnownHostsFile /dev/null 

Diese Host-Bestätigung StrictHostKeyChecking no und verwendet auch aus dem Speichern der Host identifizieren zu einer persistenten Datei einen schönen Hack zu verhindern ssh deaktiviert UserKnownHostsFile /dev/null Beachten Sie, dass ich als zusätzlichen Wert den Standardbenutzer hinzugefügt habe, mit dem eine Verbindung zum Host hergestellt werden kann, und die Option, mehrere verschiedene private Schlüssel zu identifizieren.

+1

Wow, dieser/dev/null Hack ist genial. Ich vergesse immer, wie offensichtlich einfache Dinge auf Linux sein können. Vielen Dank. – C4colo

+7

Wenn diese Lösung für Sie funktioniert, akzeptieren Sie bitte eine gültige Antwort als Antwort auf diese Frage, bitte denken Sie daran, dass die anderen Leute diese Frage Seite besuchen werden. Wenn etwas immer noch nicht für Sie funktioniert, schreiben Sie bitte eine weitere Frage in die Kommentare. –

+2

Wenn ich die UserKnownHostsFile auf/dev/null setze, erhalte ich diese Warnung jedes Mal Warnung: Dauerhaft hinzugefügt "10.9.8.7" (RSA) zu der Liste der bekannten Hosts. Irgendeine Möglichkeit, das auszuschalten? –

8

Dies dauerte eine Weile zu finden. Der häufigste Anwendungsfall, den ich gesehen habe, ist, wenn Sie SSH-Tunnel zu entfernten Netzwerken haben. Alle Lösungen haben hier Warnungen erzeugt, die meine Nagios-Skripte zerstört haben.

Die Option, die ich brauchte, war:

NoHostAuthenticationForLocalhost yes 

die, wie der Name auch nur schlägt auf localhost gilt.

2

Wenn Sie diese vorübergehend deaktivieren möchten oder ohne dass Ihre SSH-Konfigurationsdateien ändern, können Sie verwenden:

ssh -o UserKnownHostsFile=/dev/null [email protected] 
Verwandte Themen