SSH Mehrere Zeilen für denselben öffentlichen Schlüssel in known_hosts?

1142
user3019105

Nach einiger Zeit habe ich versucht, mich bei meinem SSH-Server im LAN anzumelden, und ich habe folgende Warnung erhalten:

$ ssh user@local.server.hostname Warning: Permanently added the RSA host key for IP address '192.168.1.4' to the list of known hosts. 

Ich warf einen Blick auf den folgenden Beitrag auf SO: https://stackoverflow.com/questions/9299651/warning-permanently-added-to-the-list-of-known-hosts-message-from-git Aber ich don‘ Ich glaube nicht, dass dies auf den ssh-Client zurückzuführen ist, der die known_hostsDatei nicht überprüft (ich denke, in meinem Fall wird die Datei überprüft, und ich verwende kein Windows).

Hier ist die known_hostsDatei, und ich habe festgestellt, dass ich zwei Zeilen mit demselben öffentlichen Schlüssel, aber unterschiedlichen Hostnamen / IPs habe:

$ cat ~/.ssh/known_hosts local.server.hostname,192.168.1.3 ssh-rsa ...Here it goes the public key... 192.168.1.4 ssh-rsa ...Here it goes the same public key (as for the local.server.hostname,192.168.1.3 entry above)... 

Ich bin sicher, dass die beiden öffentlichen Schlüssel gleich sind (ich habe den Fingerabdruck von beiden mit dem Befehl überprüft echo "here I pasted the public key" | base64 -D | md5, den ich für jeden Eintrag von known_hosts ausgeführt habe). Ansonsten hätte ich ein "WARNING: FERNHOST-IDENTIFIZIERUNG HAT GEÄNDERT" gesehen.

Jetzt habe ich ein lokales Netzwerk mit DHCP, so dass dem Server eine IP zugewiesen wird und manchmal eine andere zugewiesen wurde.

Ich denke, das war der Hauptgrund, warum ich diese Warnung hatte: Die Server-IP wurde geändert (von 192.168.1.3, erste Zeile von known_hosts auf 192.168.1.4), aber da der öffentliche Schlüssel gleich geblieben ist und der öffentliche Schlüssel von meinem bereits als vertrauenswürdig eingestuft wurde ssh-client, da bereits ein Eintrag für local.server.hostname,192.168.1.3in vorhanden war known_hosts, der ssh-Client zeigte mir die Warnung an, fügte jedoch den Eintrag für hinzu, 192.168.1.4ohne mich um Bestätigung zu bitten.

Ist das korrekt? Das einzige, was dabei in den Sinn kommt, ist: Warum fügte der Kunde dann einen weiteren Eintrag hinzu, statt den bereits vorhandenen zu ändern, wie beispielsweise:

local.server.hostname,192.168.1.3,192.168.1.4 ssh-rsa ...public key... 

Warum zwei Einträge für denselben öffentlichen Schlüssel?

0

1 Antwort auf die Frage

2
Dan Cornilescu

Der Grund liegt in der DHCP-Umgebung, in der Ihrem Server eine neue IP-Adresse zugewiesen wurde.

Wenn sich ssh mit einer IP-Adresse verbindet, die es nicht in seiner known_hostsDatei hat, reagiert es entsprechend Ihrer StrictHostKeyCheckingKonfiguration, siehe man ssh_config:

 StrictHostKeyChecking If this flag is set to “yes”, ssh(1) will never automatically add host keys to the ~/.ssh/known_hosts file, and refuses to connect to hosts whose host key has changed. This provides maximum protection against trojan horse attacks, though it can be annoying when the /etc/ssh/ssh_known_hosts file is poorly maintained or when connections to new hosts are frequently made. This option forces the user to manually add all new hosts. If this flag is set to “no”, ssh will automatically add new host keys to the user known hosts files. If this flag is set to “ask”, new host keys will be added to the user known host files only after the user has con- firmed that is what they really want to do, and ssh will refuse to connect to hosts whose host key has changed. The host keys of known hosts will be verified automatically in all cases. The argument must be “yes”, “no”, or “ask”. The default is “ask”. 

Wie Sie sehen, versucht ssh nicht, bekannte Schlüssel mit der neuen IP-Adresse abzugleichen / zu aktualisieren (was wahrscheinlich als Sicherheitsrisiko betrachtet wird). Daher beziehen sich die verschiedenen Zeilen auf unterschiedliche IP-Adressen auf denselben Host-Schlüssel.

Wenn der DHCP-Server jetzt die alte Adresse einem anderen Server zuweisen würde und Sie versuchen würden, ssh darauf zuzugreifen, hat er wahrscheinlich einen anderen Host-Schlüssel, und die ssh-Verbindung wird abgelehnt. Um solche Fälle zu vermeiden, sollten Sie prüfen, ob Sie zu statisch zugewiesenen IP-Adressen wechseln können (einige DHCP-Server bieten Unterstützung für statische Zuordnungen selbst, ohne Änderungen an den Clients).