41 votes

Flux de travail le plus fluide pour gérer les erreurs de vérification de l'hôte SSH?

C'est un problème simple auquel nous sommes tous confrontés et que nous résolvons probablement manuellement sans trop réfléchir.

À mesure que les serveurs changent, sont reprovisionnés ou que les adresses IP sont réallouées, nous recevons le message de vérification d'hôte SSH ci-dessous. Je suis intéressé à rationaliser le flux de travail pour résoudre ces erreurs d'identification SSH.

Étant donné le message suivant, je tape généralement vi /root/.ssh/known_hosts +434 et je supprime (dd) la ligne offensante.

J'ai vu des développeurs/utilisateurs dans d'autres organisations supprimer leur fichier entier known_hosts par frustration en voyant ce message. Bien que je n'aille pas si loin, je sais qu'il y a une manière plus élégante de gérer cela.

Conseils ?

[root@xt ~]# ssh las-db1

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    ATTENTION : L'IDENTIFICATION DE L'HÔTE DISTANT A CHANGÉ !    @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IL EST POSSIBLE QUE QUELQU'UN FASSE QUELQUE CHOSE DE DÉSAGRÉABLE !
Quelqu'un pourrait vous espionner en ce moment même (attaque de l'homme du milieu) !
Il est également possible que la clé d'hôte RSA ait été modifiée.
L'empreinte de la clé RSA envoyée par l'hôte distant est
ed:86:a2:c4:cd:9b:c5:7a:b1:2b:cc:42:15:76:8c:56.
Veuillez contacter votre administrateur système.
Ajoutez la clé d'hôte correcte dans /root/.ssh/known_hosts pour vous débarrasser de ce message.
Clé offensante dans /root/.ssh/known_hosts:434
La clé d'hôte RSA pour las-db1 a été modifiée et vous avez demandé une vérification stricte.
La vérification de la clé d'hôte a échoué.

46voto

Kyle Brandt Points 81077

Vous pouvez utiliser la commande ssh-keygen pour supprimer des entrées spécifiques par hôte :

ssh-keygen -R las-db1

Si vous n'avez pas cette commande, vous pouvez toujours utiliser sed :

sed -i '/las-db1/d' /root/.ssh/known_hosts

25voto

jammus Points 1796

En tant qu'utilisateur marionnette, ma méthode pour résoudre cela est en fait d'avoir mon serveur marionnette collecter mes clés hôtes SSH et les publier sur tous mes systèmes qui établissent des connexions SSH.

De cette façon, je n'ai pas à m'inquiéter de les supprimer. Quatre-vingt-dix-neuf pour cent du temps, la marionnette a exécuté et mis à jour les clés pour moi puisque j'ai mes agents qui tournent toutes les trente minutes. Les exceptions pour moi sont très rares, et donc cela ne me dérange pas de faire une édition rapide du fichier known_hosts système si je ne suis pas prêt à attendre.

classe ssh::hostkeys {

  @@clé SSH { "${::clientcert}_rsa":
    type => rsa,
    clé => $sshrsakey,
    tag => 'rsa_key',
  }

  si 'true' == $common::params::sshclient {
    Sshkey <<| tag == 'rsa_key' |>> {
      assurer => présent
    }
  }

  fichier {'/etc/ssh/ssh_known_hosts':
    assurer => présent,
    propriétaire => 'root',
    groupe => 'root',
    mode => 0644,
  }

}

4voto

Kenny Rasschaert Points 8737

Je voudrais ajouter une suggestion qui peut vous aider dans des cas très spécifiques où la sécurité est moins préoccupante.

J'ai un environnement de laboratoire avec des machines qui sont souvent réinstallées. Chaque fois que cela se produit, de nouvelles clés hôtes sont générées (je pourrais probablement sauvegarder la clé hôte quelque part et la définir dans le script d'installation).

Puisque la sécurité n'est pas un problème pour moi dans cet environnement de laboratoire, et que les clés changent si souvent, j'ai ce qui suit dans mon fichier .ssh/config :

Host lab-*
  User kenny
  IdentityFile ~/.ssh/lab_id_rsa
  StrictHostKeyChecking no
  UserKnownHostsFile=/dev/null

Cela garantit que la connexion à mes machines de laboratoire ne provoquera plus cette erreur et que mon client ssh se connectera simplement sans vérifier la clé hôte.

C'est quelque chose que vous ne devriez faire que si la sécurité ne vous préoccupe pas du tout, car cela vous place dans une position vulnérable pour une attaque de l'homme du milieu.

4voto

According to note de version openssh 5.6, vous n'avez plus besoin d'utiliser les clés d'hôtes :

L'authentification basée sur l'hôte peut désormais utiliser des clés d'hôte de certificat. Les clés CA doivent être spécifiées dans un fichier known_hosts en utilisant le marqueur @cert-authority comme décrit dans sshd(8).

Attention : Je n'ai jamais entendu parler de quelqu'un utilisant cette fonctionnalité en production jusqu'à présent. Utilisez à vos risques et périls (mais je crois que les développeurs d'openssh sont assez paranoïaques pour ne pas publier une fonctionnalité aussi importante sans beaucoup de tests et d'audit de code).

2voto

user63914 Points 91

Le record de ressource DNS SSHFP peut aider en fonction de la manière dont votre client SSH en tire parti. Stockez toutes les empreintes de clés publiques ssh avec le nom d'hôte.

Implémentez DNSSEC ou DNS over SSL au préalable.
http://www.ietf.org/rfc/rfc4255.txt

FreeIPA.org gère la gestion des clés d'hôtes et d'utilisateurs ainsi que les certificats PKI. Il télécharge également automatiquement les enregistrements DNS SSHFP lors de la création de nouvelles clés.

Le démon des services de sécurité du système (SSSD) peut être configuré pour mettre en cache et récupérer les clés SSH d'hôtes afin que les applications et les services n'aient à regarder qu'à un seul endroit pour les clés d'hôtes. Comme SSSD peut utiliser FreeIPA comme l'un de ses fournisseurs d'informations d'identité, FreeIPA fournit un référentiel universel et centralisé de clés. Les administrateurs n'ont pas besoin de se préoccuper de la distribution, de la mise à jour ou de la vérification des clés SSH d'hôtes.

http://docs.fedoraproject.org/en-US/Fedora/17/html/FreeIPA_Guide/host-keys.html

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X