C'est un problème simple que nous sommes tous confrontés et probablement résoudre manuellement sans donner beaucoup de pensée.
À mesure que les serveurs changent, sont réapprovisionnés ou des adresses IP réaffectées, nous recevons le message de vérification de l'hôte SSH ci-dessous. Je suis intéressé par la rationalisation du flux de travail pour résoudre ces erreurs d'identification SSH.
Compte tenu du message suivant, j'ai typiquement vi /root/.ssh/known_hosts +434
et supprimer (dd
) la ligne incriminée.
J'ai vu des développeurs/utilisateurs dans d'autres organisations supprimez leur entièreknown_hosts
Dossier de frustration à voir ce message. Pendant que je ne vais pas aussi loin, je sais qu'il y a un moyen plus élégant de gérer cela.
Des astuces?
[root@xt ~]# ssh las-db1
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE Host IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA Host key has just been changed.
The fingerprint for the RSA key sent by the remote Host is
ed:86:a2:c4:cd:9b:c5:7a:b1:2b:cc:42:15:76:8c:56.
Please contact your system administrator.
Add correct Host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:434
RSA Host key for las-db1 has changed and you have requested strict checking.
Host key verification failed.
Vous pouvez utiliser le ssh-keygen
Commande de supprimer des entrées spécifiques par l'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
En tant qu'utilisateur de marionnettes, ma méthode de résolution de cela consiste à faire collecter mes clés d'hôte SSH et les publier à tous mes systèmes qui font des connexions SSH.
De cette façon, je n'ai pas à craindre de les supprimer. Quatre-vingt-dix-neuf pour cent de l'époque de la marionnette ont couru et mis à jour les clés pour moi depuis que j'ai mes agents qui fonctionnent toutes les trente minutes. Les exceptions pour moi sont très rares, et cela ne me dérange pas de modifier rapidement le système Wide Wide_Hosts si je ne suis pas disposé à attendre.
class ssh::hostkeys {
@@sshkey { "${::clientcert}_rsa":
type => rsa,
key => $sshrsakey,
tag => 'rsa_key',
}
if 'true' == $common::params::sshclient {
Sshkey <<| tag == 'rsa_key' |>> {
ensure => present
}
}
file {'/etc/ssh/ssh_known_hosts':
ensure => present,
owner => 'root',
group => 'root',
mode => 0644,
}
}
J'aimerais 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 se réinstallent souvent. Chaque fois que cela se produit, de nouvelles clés d'hôte sont générées (je pouvais probablement enregistrer la clé hôte quelque part et la définir dans le script post-installation).
Étant donné que 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/configuration:
Host lab-*
User kenny
IdentityFile ~/.ssh/lab_id_rsa
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
Cela veille à ce que la connexion à mes machines de laboratoire ne causera plus jamais cette erreur et que mon client SSH ne se connecte pas sans vérifier la clé hôte.
C'est quelque chose que vous ne devriez faire que si la sécurité ne vous concerne pas du tout, car cela vous met dans une position vulnérable pour une attaque man-in-house.
Selon OpenSSH 5.6 Release Remarque , vous n'avez plus besoin d'utiliser les clés des hôtes:
L'authentification HostBased peut maintenant utiliser des touches d'hôte de certificat. Les touches CA doivent être spécifiées dans un fichier connu_hosts à l'aide du marqueur @ Cert-Authority comme décrit dans SSHD (8).
AVERTISSEMENT : Je n'ai jamais entendu parler de personne en utilisant cette fonctionnalité dans la production jusqu'à présent. Utilisez à vos risques et périls (mais je crois que les développeurs OpenSSH sont suffisamment paranoïdes pour ne pas publier une fonctionnalité aussi tueuse sans beaucoup d'essais et d'audit de codes).
SSHFP DNS ResourceCordecord peut aider en fonction de la manière dont votre client SSH en profite. Stockez toutes vos empreintes digitales de votre clé SSH avec le nom d'hôte.
Mettre en œuvre DNSSEC ou DNS sur SSL à l'avance.
[.____] http://www.ietf.org/rfc/rfc4255.txt
Freeipa.org gère la gestion des clés hôte et des utilisateurs ainsi que des certificats PKI. Il télécharge également automatiquement les enregistrements DNS SSHFP lorsque de nouvelles clés sont créées.
Le démon (SSSD) de System Security Services peut être configuré pour mettre en cache et récupérer les touches SSH d'hôte afin que les applications et les services ne soient à rechercher que dans un endroit pour les clés hôtes. Étant donné que 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 à vous soucier de la distribution, de la mise à jour ou de la vérification des touches SSH hôte.
http://docs.fedorAproject.org/en-us/fedora/17/html/freeipa_guide/host-keys.html