Question Problème de connexion SSH avec l'erreur «Échec de la vérification de la clé de l'hôte…»


Je peux me connecter à une autre machine Ubuntu sur mon réseau local via SSH. Sur les deux PC, j'ai installé openssh-server  mais à partir d'un autre ordinateur Ubuntu, je ne peux pas me connecter à mon PC via SSH et j'ai cette erreur:

La vérification de la clé de l'hôte a échoué ...


139
2018-05-28 11:36


origine


Utilisez-vous des noms d'hôte ou des adresses IP? - Thorbjørn Ravn Andersen
Pas pareil mais j'ai eu la même erreur mais à cause d'un problème différent: serverfault.com/questions/494916/… - zengr
Ce n'est pas un problème spécifique à Ubuntu. Peut arriver avec n'importe quel ssh à partir de la ligne de commande. - MarkHu


Réponses:


"Échec de la vérification de la clé de l'hôte" signifie que hôte La clé de l'hôte distant a été modifiée.

SSH stocke les clés d’hôte des hôtes distants dans ~/.ssh/known_hosts. Vous pouvez soit éditer ce fichier texte manuellement et supprimer l’ancienne clé (vous pouvez voir le numéro de ligne dans le message d’erreur), ou utiliser

ssh-keygen -R hostname

(que j'ai appris de la réponse à Est-il possible de supprimer une clé hôte particulière du fichier known_hosts de SSH?).


164
2018-05-28 13:19



Cela peut également signifier que vous n'avez simplement pas la clé d'hôte de l'hôte distant. Par exemple, si je rm ~/.ssh/*, puis ssh -o BatchMode=yes root@somewhere, si rien d'autre ne va pas je vais obtenir Host key verification failed.Pas important si vous êtes toujours interactif, mais pertinent pour les scripts rencontrant la même erreur. - Ron Burk
Sans surprise, ssh-keygen -R example.net:7999 les rendements Host example.net:7999 not found in known_hosts. - alex
j'ai enlevé known_hosts fichier et ssh à nouveau. Ça a marché. - ParisaN


Si vous travaillez dans certaines situations de script / à distance où vous ne disposez pas d'un accès interactif à l'invite-à-ajouter-la-clé, contourner ce problème:

$ ssh -o StrictHostKeyChecking=no user@something.example.com uptime

Avertissement: Ajout permanent de 'something.example.com, 10.11.12.13' (RSA) à la liste des hôtes connus.


104
2017-07-24 00:47



+1, ceci est une solution moche, mais dans certains cas de processus de surveillance automatisés qui fonctionnent avec les périphériques connectés dymaic ip, il s'agit d'une solution simple et acceptable. - Ninsuo
+1 Par exemple, pour les exécutions de Jenkins, c'est une bonne solution. Merci - Lobo
@Lobo ne peut pas être plus d'accord, je l'utilise pour les Jenkins, ce qui est cool sh """ssh -o StrictHostKeyChecking=No ec2-user@someIpAddress-e2e sudo service tomcat restart""" - prayagupd
Sauvé ma vie. Solution de sauvetage. - user1735921


Parfois aussi, il y a une situation où vous travaillez sur une console série, puis en vérifiant la commande ci-dessus en mode prolixe -v vous montrera /dev/tty n'existe pas, alors que c'est le cas.

ssh -v user@hostname

Dans le cas ci-dessus, il suffit de supprimer /dev/tty et créer un lien symbolique de /dev/ttyS0 à /dev/tty.

rm /dev/tty
ln -s /dev/ttyS0 /dev/tty

Comme alternative, ajoutez id_rsa.pub à l'emplacement distant, donc le mot de passe n'est pas invité et vous obtenez un accès de connexion.


10
2018-05-27 13:01



+1 pour conseiller d'utiliser le paramètre -v; Cela peut aider beaucoup lors du débogage des problèmes ssh. - daniel kullmann


Dans mon cas, cela était dû à un problème d'udev - il n'y avait pas /dev/tty nœud de périphérique. La solution pour moi était juste:

sudo mknod -m 666 /dev/tty c 5 0

8
2017-07-25 20:28





Eh bien, tout simplement parce que le deuxième ubuntu nécessite une connexion par clé et non par mot de passe.

Je vous suggère d'utiliser sudo dpkg-reconfigure openssh-server sur votre PC, puis il devrait fonctionner correctement. Il réinitialisera la configuration pour openssh et reviendra à une authentification par mot de passe par défaut.

La deuxième possibilité est qu’il existe déjà une clé pour votre autre ubuntu dans votre PC, et qu’elle a changé de manière à ne plus être reconnue. Dans ce cas, vous devrez éditer le fichier .ssh/authorized_keys supprimer la ligne problématique identifiant votre ubuntu.


3
2018-05-28 11:39





Ceci est un vieux sujet et je viens de trouver cette réponse, je vais juste ajouter ce que j'ai fait pour résoudre ce problème.

ssh-keygen -f "/home/USER/.ssh/known_hosts" -R HOSTNAME

Je viens de regarder le message d'erreur qu'il m'a lancé et il m'a dit d'exécuter cette commande afin de la supprimer de la liste des hôtes. Après cela, j'ai fait ce qui suit:

ssh-copy-id HOSTNAME

Je suivis ensuite les invites jusqu’à ce que je puisse entrer dans le serveur.


3
2018-04-15 16:09



Comme cette commande, je reçois comme suggestion dans Ubuntu 12.4. - MaNKuR


Sur le terminal:

ssh -o StrictHostKeyChecking=No -i YourPublicKey.pem user@example.com uptime

Le message suivant, ou similaire, apparaîtra:

Warning: Permanently added 'example.com, XX.XXX.XXX.XX' (ECDSA) to the list of known hosts.
 00:47:37 up 3 min,  0 users,  load average: 0.00, 0.00, 0.00

Ensuite, connectez-vous à votre EC2 normalement:

ssh -i YourPublickey.pem user@example.com

3
2018-03-27 00:50



j'ai eu command-line line 0: Bad yes/no/ask argument. parce que vous utilisez à tort «non» au lieu de «non» comme argument pour StrictHostKeyChecking - Axel Bregnsbo