SSH: bekannter Host mit dynamischer Adresse

5185
peoro

Ich muss eine Verbindung zu einem Host mit einer dynamischen IP-Adresse herstellen.

Bei jeder Änderung der IP-Adresse fordert mich SSH zur Überprüfung der Fingerabdrücke auf:

The authenticity of host '...' can't be established. RSA key fingerprint is .... Are you sure you want to continue connecting (yes/no)? 

Ist es möglich, SSH den öffentlichen Host-Schlüssel zu übergeben, so dass:

  1. SSH validiert die Authentizität des Hosts automatisch
  2. Der Hostschlüssel wird nicht in der Datei known_hosts gespeichert

Diese Frage unterscheidet sich von Wie kann ich die Host-Überprüfung für bekannte Hosts durch SSH vermeiden? da, dass andere Fragen soll SSH Validierung zu unterdrücken, während ich nicht, es zu unterdrücken wollen: ich tun möchte der Host authentifiziert haben, nur die Host-öffentlichen Schlüssel (was ich weiß, und haben sie in einer Datei gespeichert) statt SSH known_hostsDatei.

Für mich scheint die andere Frage zu sein, jedes Mal eine Verbindung zu einem anderen Server herzustellen, anstatt eine Verbindung zu einem einzigen bekannten Server mit einer dynamischen IP herzustellen.

9

2 Antworten auf die Frage

6
peoro

Die beste Lösung (dh am nächsten an dem, was ich möchte) könnte ich finden, die Option zu verwenden HostKeyAlias: Es wird ein Hostname verwendet, den ich für den Zugriff angegeben habe known_hosts(und nicht auf die IP, mit der ich mich verbinde).

Ich muss den öffentlichen Schlüssel des Hosts zur known_hostsVerwendung eines bestimmten Hostnamens hinzufügen (zB:) myhostund dann eine Verbindung mit dem Host herstellen, indem

ssh -o 'HostKeyAlias myhost' ... 
Ich weiß, dass es eine Weile her ist, aber: Wenn dies Ihre Frage am besten beantwortet, akzeptieren Sie es bitte. kittykittybangbang vor 8 Jahren 0
Hinweis für andere Benutzer: Sie können den Konfigurationswert `HostKeyAlias` Ihrer` ~ / .ssh / config'-Datei oder sogar der globalen `/ etc / ssh / ssh_config`-Datei hinzufügen. kael vor 6 Jahren 0
4
NickW

Die known_hostsDatei ist nicht nur der Schlüssel, sondern enthält auch den Hostnamen, den Sie zum Verbinden verwenden, und, falls möglich, die entsprechende IP-Adresse. Deshalb sehen Sie den Fehler. Er vergleicht das vom Server erhaltene Triplett mit dem, was Sie in der Datei known_hosts gespeichert haben.

Wenn sich die IP-Adresse also ständig ändert, können Sie sie deaktivieren. Dies CheckHostIPbedeutet, dass nur der Hostname und der Hostschlüssel überprüft werden. Wenn diese nicht geändert werden, sollten Sie weniger Beschwerden haben. Sie sind jedoch gefährdet, wenn jemand Ihre DNS entführt.

Danke für die Antwort, ich werde es so schnell wie möglich testen! Warum sollte es überhaupt so sein? Wenn ich den öffentlichen SSH-Schlüssel eines Hosts kenne, sollte dies ausreichen, um auf jeden Fall absolut sicher zu sein (es sei denn, es ist jemandem möglich, den privaten Schlüssel dieses Hosts zu stehlen), oder? peoro vor 10 Jahren 1
Und trotzdem mag ich es nicht wirklich, wenn ich ehrlich sein muss. Mit diesem Flag kann SSH weiterhin auf 'known_hosts' zugreifen. Warum? Kann ich nicht sagen "ssh verbindet sich mit X, dessen öffentlicher Schlüssel Y ist"? Warum nicht? Wäre das nicht 100% sicher. peoro vor 10 Jahren 0
Die Idee ist, dass der Host-Schlüssel Teil eines größeren Ganzen ist, und dies allein reicht nicht aus, um sicherzustellen, dass der Server, mit dem Sie sich verbinden, immer noch derjenige ist, mit dem Sie zuvor verbunden waren. Sie müssen sicherstellen, dass die IP- und DNS-Einträge ebenfalls übereinstimmen. Denken Sie daran, dies ist eine netzwerkbasierte Shell, daher muss auch das Netzwerk überprüft werden. NickW vor 10 Jahren 0