Mam hosta o nazwie nms.example.org. W mojej /etc/ssh/ssh_known_hosts
mam wpis dla hosta z kluczem RSA. Ten wpis i wszystkie pozostałe wpisy są zarządzane przez mój system zarządzania konfiguracją.
nms.example.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZqfmVPs/XqTS...
Mam również wpis /etc/ssh/ssh_config
dla mojego hosta, który ustawia alias klucza hosta. Co, jeśli dobrze rozumiem wszystko, oznacza to, że tylko to nms.example.org
powinno mieć znaczenie.
Host nms.example.org nms.example nms
HostKeyAlias nms.example.org
HostName nms.example.org
Dlaczego więc, kiedy łączę się z klientem, ssh nadal wydaje się myśleć, że musi dodać klucz do moich znanych hostów dla każdego użytkownika z adresem IP hosta?
$ 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 wie, że mój host jest prawidłowy (patrz Host 'nms.example.org' is known and matches the RSA host key
:), więc dlaczego dodaje klucz do adresu IP do profilu użytkownika?
Jest to bardzo irytujące, ponieważ kiedy ponownie instaluję komputer, mój system zarządzania konfiguracją dobrze radzi sobie z gromadzeniem i dystrybucją kluczy hosta do całego systemu. Ale pozostaną te pozostające w konflikcie klucze powiązane z adresami IP w plikach znanych_hostów dla poszczególnych zastosowań, które powodują ostrzeżenia przy próbie połączenia, które uniemożliwiają połączenie skryptów.
$ 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)?
Jak mogę zapobiec buforowaniu przez SSH tej wartości IP dla każdego użytkownika znane_hosty? Czy jest jakiś powód bezpieczeństwa, dla którego muszę po prostu żyć z tym irytującym zachowaniem? To mnie również frustruje, ponieważ kilka serwerów ma dość dynamiczne adresy IP. Moje zarządzanie konfiguracją obsługuje aktualizacje DNS. Pozostają mi jednak klucze hosta na adres IP wypełniające moje pliki znane_hosty na użytkownika.