2009-10-31 12 views
37

Je travaille sur un réseau où les systèmes à une adresse IP changent fréquemment. Ils sont déplacés sur et hors de l'espace de travail et DHCP détermine l'adresse IP qu'ils obtiennent.SSH sous Linux: désactivation de la vérification de la clé hôte pour les hôtes sur le sous-réseau local (known_hosts)

Il ne semble pas simple de désactiver la mise en cache/vérification des clés de l'hôte pour ne pas avoir à modifier ~/.ssh/known_hosts chaque fois que j'ai besoin de me connecter à un système. Je ne m'inquiète pas de l'authenticité de l'hôte, ils sont tous sur le segment réseau 10.x.x.x et je suis relativement certain que personne ne m'est MITM.

Existe-t-il une façon «correcte» de le faire? Je m'en fous si ça m'avertit, mais arrêter et me faire vider mon entrée known_hosts pour cette adresse IP à chaque fois est ennuyeux et dans ce scénario il ne fournit pas vraiment de sécurité car je me connecte rarement aux systèmes plus d'une fois ou deux fois puis l'adresse IP est donnée à un autre système. J'ai regardé dans le fichier ssh_config et j'ai vu que je pouvais mettre en place des groupes pour que la sécurité de la connexion aux machines externes puisse être préservée et je pouvais juste ignorer vérifier les adresses locales. Ce serait optimal. De la recherche, j'ai trouvé des opinions très fermes sur le sujet, allant de «Ne plaisante pas avec ça, c'est pour la sécurité, traite-le» jusqu'à «C'est la chose la plus stupide que j'ai jamais eu à faire. avec, je veux juste l'éteindre "... Je suis quelque part au milieu. Je veux juste être capable de faire mon travail sans devoir purger une adresse du fichier toutes les quelques minutes.

Merci.

Répondre

9

En supposant que vous utilisez OpenSSH, je crois que vous pouvez définir le

CheckHostIP no 

option pour empêcher les adresses IP hôtes d'être vérifiées dans known_hosts. Sur la page de l'homme:

CheckHostIP

Si ce drapeau est réglé sur 'oui', ssh (1) sera en outre vérifier l'adresse IP de l'hôte dans le fichier known_hosts. Ce permet à ssh de détecter si une clé d'hôte a été modifiée en raison d'une usurpation 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'.

+0

J'ai ajouté une section au bas du fichier de configuration avec l'hôte 10.0.0. * Et au-dessous que je mets CheckHostIP pas Savez-vous si j'ai besoin de mettre tous les autres paramètres là-bas ou si c'est en plus de l'hôte * ci-dessus? Je vais devoir attendre jusqu'à ce que je me connecte à un système qui a reçu une adresse IP "utilisée" pour m'assurer que cette modification fonctionne. Je vais accepter votre réponse si cela fonctionne. Merci. – C4colo

+0

Il ne semble pas que ça fasse l'affaire 100% ... je ne sais pas pourquoi, je vais devoir jouer avec un peu plus et voir si je peux l'obtenir pour faire ce que je veux. – C4colo

+0

Que voulez-vous dire par "100%"? Est-ce que ça marche parfois mais pas les autres? –

80

Voici la configuration que j'utilise pour nos hôtes EC2 en constante évolution:

[email protected]:~$ cat ~/.ssh/config 
Host *amazonaws.com 
     IdentityFile ~/.ssh/keypair1-openssh 
     IdentityFile ~/.ssh/keypair2-openssh 
     User ubuntu 
     StrictHostKeyChecking no 
     UserKnownHostsFile /dev/null 

Cela désactive la confirmation hôte StrictHostKeyChecking no et utilise aussi une belle astuce pour empêcher ssh de sauver l'hôte d'identifier un fichier persistant UserKnownHostsFile /dev/null note que j'ai ajouté l'utilisateur par défaut avec lequel se connecter à l'hôte et l'option d'essayer plusieurs clés privées différentes.

+1

Wow, ce hack/dev/null est génial. J'oublie toujours à quel point les choses simples peuvent être sur linux. Je vous remercie. – C4colo

+7

Si cette solution fonctionne pour vous, veuillez accepter une réponse valide comme réponse à cette question, s'il vous plaît rappelez-vous que les autres personnes visiteront cette page de questions. Si quelque chose ne fonctionne toujours pas pour vous, postez une autre question dans les commentaires. –

+2

Si je mets le UserKnownHostsFile à/dev/null, j'obtiens cet avertissement à chaque fois 'Attention: Ajouté de manière permanente '10 .9.8.7' (RSA) à la liste des hôtes connus. ' Un moyen de l'éteindre? –

8

Cela m'a pris du temps à trouver. Le cas d'utilisation le plus courant que j'ai vu est quand vous avez des tunnels SSH pour les réseaux distants. Toutes les solutions ici ont produit des avertissements qui ont brisé mes scripts Nagios.

L'option que je avais besoin était:

NoHostAuthenticationForLocalhost yes 

qui, comme son nom l'indique s'applique également que localhost.

2

Si vous souhaitez désactiver cette façon temporaire ou sans avoir besoin de modifier vos fichiers de configuration SSH, vous pouvez utiliser:

ssh -o UserKnownHostsFile=/dev/null [email protected]