Eu tenho um host chamado nms.example.org. No meu /etc/ssh/ssh_known_hosts
eu tenho uma entrada para o host com a chave RSA. Esta entrada e todas as outras entradas são gerenciadas pelo meu sistema de gerenciamento de configuração.
nms.example.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZqfmVPs/XqTS...
Também tenho uma entrada no meu /etc/ssh/ssh_config
para o host específico, definindo o alias da chave do host. Que, se eu entender tudo corretamente, isso significa que apenas o nms.example.org
que importa.
Host nms.example.org nms.example nms
HostKeyAlias nms.example.org
HostName nms.example.org
Por que, então, quando eu me conecto de um cliente, o ssh ainda parece achar necessário adicionar uma chave aos meus conhecimentos_hosts por usuário com o IP do host?
$ 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
...
O SSH sabe que meu host é válido (consulte Host 'nms.example.org' is known and matches the RSA host key
:). Por que ele adiciona a chave do IP a um perfil de usuário?
Isso é extremamente irritante, porque quando eu reinstalo uma máquina, meu sistema de gerenciamento de configurações gerencia a coleta e distribuição das chaves do host para todo o sistema. Porém, haverá essas chaves conflitantes associadas aos IPs nos arquivos conhecido_host por uso que causam avisos em uma tentativa de conexão que impedem a conexão de scripts.
$ 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)?
Como posso impedir que o ssh armazene em cache esse valor por IP em cada usuário known_hosts? Ou há algum motivo de segurança pelo qual eu apenas tenho que viver com esse comportamento irritante? Isso também me frustra porque alguns servidores têm endereços IP um tanto dinâmicos. Meu gerenciamento de configuração lida com as atualizações de DNS. Mas eu deixo essas chaves de host por IP preenchendo meus arquivos known_host por usuário.
CheckHostIP yes
isso melhora a segurança ... SE o usuário souber exatamente o que está fazendo, como o sistema usa esse parâmetro e os conceitos de confiança implícita. Então, eu realmente seria dividir os cabelos, que eu não vou fazer ... Eu vou guardá-lo para a segurança-se;)