2009-04-09 5 views
14

Ich habe 2 SSH-Server hinter einer NAT-Firewall an einem Ort, der seine wan IP jeden Tag ändert. Sie haben immer die gleiche wan IP-Adresse zu einer bestimmten Zeit, aber an verschiedenen Ports.Wie wird die SSH-Host-Schlüsselüberprüfung mit zwei verschiedenen Hosts auf derselben (aber sich ändernden) IP-Adresse behandelt?

ich Server A anschließe auf diese Weise:

ssh -p 22001 [email protected] 

und Server B:

ssh -p 22002 [email protected] 

Also ich 2 verschiedenen Host-Schlüssel für die gleiche IP zu bekommen, und wenn auch die IP-Änderungen sogar eine andere IP für denselben Host.

Ich muss weiter und löschen den anderen Schlüssel oder den alten Schlüssel (im Falle von IP-Änderung) in der known_hosts Datei.

Ich zögere, die Schlüsselverifizierung auszuschalten, weil dies weniger sicher wäre. Aber es ist auch unsicher, eine Warnung zu erhalten (weil ich solche Warnungen die ganze Zeit ignoriere). Gibt es eine bessere Lösung? Diese

bezieht sich auf meine alte Frage hier aber nicht das gleiche:

SSH login warning message on a server with 2 DNS names

+0

warum dies wurde geschlossen, anstatt auf [Super-User] bewegten (https : //superuser.com/) oder [Unix & Linux] (https://unix.stackexchange.com/)? –

Antwort

32

ich denke, das funktioniert:

erstellen config Datei in Ihrem .ssh Verzeichnis wie folgt:

Host server1 
    Hostname x1.example.com 
    HostKeyAlias server1 
    CheckHostIP no 
    Port 22001 
    User karl 

Host server2 
    Hostname x2.example.com 
    HostKeyAlias server2 
    CheckHostIP no 
    Port 22002 
    User karl 

Erläuterung Unten (von man ssh_config)

CheckHostIP

Wenn dieser Flag auf "Ja" gesetzt ist, ssh (1) wird zusätzlich prüfen die Host-IP-Adresse in der known_hosts Datei. Dadurch 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. Die Standardeinstellung ist "Ja".

HostKeyAlias ​​

Gibt einen Alias, der anstelle der echten Hostnamen verwendet werden soll, wenn die Suche nach oben oder dem Host-Schlüssel in den Host-Schlüssel Datenbank-Dateien zu speichern. Diese Option ist nützlich zum Tunneln von SSH Verbindungen oder für mehrere Server, die auf einem einzelnen Host ausgeführt werden.

Die Username und Port Linie vermeidet Sie diese Optionen in der Befehlszeile geben zu müssen, zu, so dass Sie nur verwenden können:

% ssh server1 
% ssh server2 
+0

Das ist so cool! Funktioniert super, danke! – user89021

+1

Ich frage mich nur: Gibt es eine Möglichkeit, ssh die IP UND Port in known_hosts zu speichern?IIUC, das würde einen gewissen Schutz gegen DNS-Spoofing erlauben, oder? – Hbf

+1

@Hbf auf meinem MacOS X System der Port (wenn nicht Standard) _ist_ in 'known_hosts' gespeichert. – Alnitak

Verwandte Themen