Comment modifier known_hosts lorsque plusieurs hôtes partagent le même nom IP et DNS?

Je ssh régulièrement dans un ordinateur qui est un ordinateur OS X / Linux à double démarrage. Les deux instances de l'OS ne partagent pas la même clé d'hôte, de sorte qu'elles peuvent être considérées comme deux hôtes partageant la même IP et DNS. Disons que l'IP est 192.168.0.9 , et les noms sont hostname et hostname.domainname hostname . hostname.domainname

Dans la mesure où j'ai compris, la solution pour pouvoir se connecter aux deux hôtes est de les ajouter au fichier ~/.ssh/know_hosts . Cependant, il est plus facile à dire que fait, car le fichier est haché et a probablement plusieurs entrées par hôte ( 192.168.0.9 , hostname , hostname.domainname hostname , hostname.domainname ). En conséquence, j'ai l'avertissement suivant

 Warning: the ECDSA host key for 'hostname' differs from the key for the IP address '192.168.0.9' 

Existe-t-il un moyen simple d'éditer le fichier known_hosts , tout en conservant les hachis. Par exemple, comment puis-je trouver les lignes correspondant à un hostame donné? Comment puis-je générer des hachages pour certains hôtes connus?

La solution idéale me permet de me connecter de façon transparente à cet ordinateur avec ssh, peu importe si je l'appelle 192.168.0.9 , hostname ou hostname.domainname . Nom de domaine, ni utilisation de Linuxkey ou de son hôte OSX. Cependant, je souhaite toujours recevoir un avertissement s'il existe une véritable attaque de l'homme dans le milieu, c'est -à- dire si une autre clé que ces deux est utilisée.

    La solution la plus simple ici est simplement d'utiliser les mêmes clés d'hôte pour Linux et OS X. C'est-à-dire, choisissez un ensemble de fichiers /etc/ssh/ssh_host_*_key* et copiez-les sur l'autre système d'exploitation. Ensuite, la même clé hôte sera présentée à un client SSH quel que soit le système d'exploitation OS que vous avez démarré, et le client SSH ne sera pas le plus sage.

    Comme l'a suggéré @Izzy dans un commentaire ci-dessus, ssh vous indique la ligne offensante, et en supprimant cette ligne (en l'enregistrant ailleurs), en acceptant la nouvelle clé, puis en copiant la ligne supprimée, vous finissez par deux clés pour la même chose L'hôte, et ssh acceptera non plus.

    (Vous pouvez également utiliser ssh-keygen -H -F <hostname> pour trouver des lignes dans votre fichier known_hosts qui correspondent à ce nom d'hôte. Exécuter ceci après avoir copié la ligne supprimée doit indiquer deux entrées.)

    Si quelqu'un sait comment faire de PuTTY faire la même chose, je serais très intéressé d'entendre parler de ça.

    J'ai trouvé cela qui peut vous aider avec ce que vous voulez atteindre.

    Source: https://stackoverflow.com/questions/733753/how-to-handle-ssh-host-key-verification-with-2-different-hosts-on-the-same-but

    Créez un fichier de configuration dans votre répertoire .ssh comme suit:

     Host server1 Hostname x1.example.com HostKeyAlias server1 CheckHostIP no Port 22001 User karl Host server2 Hostname x2.example.com HostKeyAlias server2 CheckHostIP no Port 22002 User karl 

    Explication ci-dessous (de man ssh_config)

    CheckHostIP

    Si ce drapeau est défini sur "oui", ssh (1) vérifiera en plus l'adresse IP de l'hôte dans le fichier known_hosts. Cela permet à ssh de détecter si une clé hôte a changé en raison de la falsification 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".

    HostKeyAlias

    Spécifie un alias qui doit être utilisé au lieu du nom d'hôte réel lors de la recherche ou de l'enregistrement de la clé hôte dans les fichiers de la base de données de la clé hôte. Cette option est utile pour le tunneling des connexions SSH ou pour plusieurs serveurs fonctionnant sur un seul hôte.

    La ligne de nom d'utilisateur et de port évite de devoir donner ces options sur la ligne de commande, de sorte que vous pouvez simplement utiliser:

     % ssh server1 % ssh server2 

    Je ne suis pas confronté à ce problème lors de la connexion à différentes boîtes VPS partageant la même adresse IP car chacun a un autre port SSH (20022,30022, etc.) afin qu'ils soient enregistrés comme hôtes connus avec différentes clés.

    Cela pourrait-il être une solution de contournement pour vous?