Ich habe einen Host namens nms.example.org. In meinem habe /etc/ssh/ssh_known_hosts
ich einen Eintrag für den Host mit dem RSA-Schlüssel. Dieser Eintrag und alle anderen Einträge werden von meinem Konfigurationsverwaltungssystem verwaltet.
nms.example.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZqfmVPs/XqTS...
Auch ich habe einen Eintrag in meinem /etc/ssh/ssh_config
für den spezifischen Wirt, der den Wirtschlüsselalias einstellt. Was bedeutet, wenn ich alles richtig verstehe, sollte nur das nms.example.org
eine Rolle spielen.
Host nms.example.org nms.example nms
HostKeyAlias nms.example.org
HostName nms.example.org
Warum dann, wenn ich mich von einem Client aus verbinde, scheint ssh immer noch zu glauben, dass es meinem benutzerspezifischen known_hosts einen Schlüssel mit der IP des Hosts hinzufügen muss ?
$ ssh nms -v
OpenSSH_6.0p1 Debian-4+deb7u4, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /home/zoredache/.ssh/config
debug1: /home/zoredache/.ssh/config line 61: Applying options for *
debug1: /home/zoredache/.ssh/config line 71: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 84: Applying options for nms
debug1: /etc/ssh/ssh_config line 363: Applying options for *
debug1: Connecting to nms.example.org [104.236.190.144] port 22.
debug1: Connection established.
debug1: identity file /home/zoredache/.ssh/zoredache-20140204.id_rsa type 1
...
debug1: Server host key: RSA 6b:5f:b6:e9:13:c3:b7:39:1e:ec:74:05:33:64:4d:5e
debug1: using hostkeyalias: nms.example.org
debug1: Host 'nms.example.org' is known and matches the RSA host key.
debug1: Found key in /etc/ssh/ssh_known_hosts:104
Warning: Permanently added the RSA host key for IP address '192.0.2.144' to the list of known hosts.
debug1: ssh_rsa_verify: signature correct
...
SSH weiß, dass mein Host gültig ist (siehe Host 'nms.example.org' is known and matches the RSA host key
:). Warum fügt es einem Benutzerprofil den Schlüssel für die IP hinzu?
Dies ist äußerst ärgerlich, da mein Konfigurationsverwaltungssystem bei der Neuinstallation eines Computers das Sammeln und Verteilen der Hostschlüssel an das gesamte System übernimmt. Es bleiben jedoch Schlüssel übrig, die mit IPs in bekannten_Host-Dateien in Konflikt stehen und bei einem Verbindungsversuch Warnungen auslösen, die verhindern, dass Skripte eine Verbindung herstellen.
$ ssh nms -v
OpenSSH_6.0p1 Debian-4+deb7u4, OpenSSL 1.0.1e 11 Feb 2013
...
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u4
debug1: using hostkeyalias: nms.example.org
...
debug1: Server host key: RSA 6b:5f:b6:e9:13:c3:b7:39:1e:ec:74:05:33:64:4d:5e
debug1: using hostkeyalias: nms.example.org
debug1: Host 'nms.example.org' is known and matches the RSA host key.
debug1: Found key in /etc/ssh/ssh_known_hosts:104
Warning: the RSA host key for 'nms.example.org' differs from the key for the IP address '192.0.2.144'
Offending key for IP in /home/zoredache/.ssh/known_hosts:25
Matching host key in /etc/ssh/ssh_known_hosts:104
Are you sure you want to continue connecting (yes/no)?
Wie kann ich verhindern, dass ssh diesen Pro-IP-Wert in den bekannten_Hosts aller Benutzer zwischenspeichert? Oder gibt es einen Sicherheitsgrund, warum ich mit diesem nervigen Verhalten leben muss? Das frustriert mich auch, weil einige Server etwas dynamische IP-Adressen haben. Mein Konfigurationsmanagement kümmert sich um die DNS-Updates. Aber ich bekomme diese verbleibenden IP-Host-Schlüssel, die meine benutzerspezifischen known_host-Dateien füllen.