Pourquoi SSH ajoute-t-il une input known_host pour une adresse IP?

J'ai un hôte nommé nms.example.org. Dans mes /etc/ssh/ssh_known_hosts j'ai une input pour l'hôte avec la key RSA. Cette input et toutes les autres inputs sont gérées par mon système de gestion de configuration.

 nms.example.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZqfmVPs/XqTS... 

Aussi j'ai une input dans mon /etc/ssh/ssh_config pour l'hôte spécifique définissant l'alias de key d'hôte. Ce qui si je comprends tout correctement, cela signifie que seul le nms.example.org devrait importer.

 Host nms.example.org nms.example nms HostKeyAlias nms.example.org HostName nms.example.org 

Pourquoi alors, quand je me connecte à partir d'un client, ssh semble toujours penser qu'il a besoin d'append une key à mes users connus par l'user avec l' adresse IP de l'hôte?

 $ 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 sait que mon hôte est valide (voir: l' Host 'nms.example.org' is known and matches the RSA host key ) alors pourquoi ajoute-t-il la key pour l'IP à un profil d'user?

Ceci est extrêmement irritant, car lorsque je réinstalle une machine, mon système de gestion de configuration gère la collecte et la dissortingbution des keys d'hôte sur tout le système. Mais il restra ces keys conflictuelles associées aux adresses IP dans les files connus_host par utilisation qui provoquent des avertissements lors d'une tentative de connection empêchant la connection des scripts.

 $ ssh nms -v OpenSSH_6.0p1 Debian-4+deb7u4, OpenSSL 1.0.1e 11 Feb 2013 ... debug1: Local version ssortingng 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)? 

Comment puis-je empêcher ssh de mettre en cache cette valeur par IP dans chaque user known_hosts? Ou y a-t-il une raison de security pour laquelle je dois vivre avec ce comportement agaçant? Cela me contrarie aussi car quelques servers ont des adresses IP assez dynamics. Ma gestion de la configuration gère les mises à jour DNS. Mais j'obtiens ces clefs d'hôte par-IP remplissant mes dossiers d'user-connu par user.

Je pense que c'est pour faire fonctionner le CheckHostIP .

Si cet indicateur est défini sur "yes", ssh (1) vérifie en plus l'adresse IP de l'hôte dans le file known_hosts . Cela permet à ssh de détecter si une key d'hôte a changé en raison de l'usurpation de DNS. Si l'option est définie sur "non", la vérification ne sera pas exécutée. La valeur par défaut est "oui".

Vous obtenez un peu plus de diagnostics en cas de mauvaise configuration ou d'attaque avec cette option, mais cela n'améliore pas réellement la security de quelque façon que ce soit.

Si vous désactivez CheckHostIP SSH (à partir d'OpenSSH 6.7p1) n'enregistre pas l'adresse IP lorsque vous vous connectez à un nouvel hôte par son nom. Ajoutez donc ceci à votre .ssh/config :

 CheckHostIP no 

Vous pouvez l'append à une section Host si vous souhaitez uniquement la désactiver pour un hôte spécifique (en particulier avec une adresse IP dynamic).