web-dev-qa-db-fra.com

Problème de connexion SSH avec l'erreur "La vérification de la clé de l'hôte a échoué ..."

Je peux me connecter à un autre ordinateur Ubuntu de mon réseau local via SSH. Sur les deux ordinateurs, 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 eu cette erreur:

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

171
Navid

"Echec de la vérification de la clé de l'hôte" signifie que la clé de l'hôte 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 modifier ce fichier texte manuellement et supprimer l'ancienne clé (vous pouvez voir le numéro de ligne dans le message d'erreur), soit utiliser

ssh-keygen -R hostname

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

198
elmicha

Si vous exécutez certaines situations de script/à distance dans lesquelles vous ne disposez pas d'un accès interactif à la clé Invite-à-ajouter-host-host, procédez comme suit:

$ ssh -o StrictHostKeyChecking=no [email protected] uptime

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

120
MarkHu

De plus, il arrive parfois que vous travailliez sur une console série. Lorsque vous vérifiez la commande ci-dessus en mode explicite, -v vous montrera que /dev/tty n'existe pas, alors qu'il existe.

ssh -v user@hostname

Dans le cas précédent, supprimez simplement /dev/tty et créez un lien symbolique de /dev/ttyS0 à /dev/tty.

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

En guise d'alternative, ajoutez id_rsa.pub à l'emplacement distant, afin que le mot de passe ne soit pas demandé et que vous obteniez un accès à la connexion.

10
Peeyush

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

Sudo mknod -m 666 /dev/tty c 5 0
8
Mark

Sur le terminal:

ssh -o StrictHostKeyChecking=no -i YourPublicKey.pem [email protected] 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 [email protected]
6
Vitor Abella

Eh bien, tout simplement parce que le second 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 ordinateur, puis il devrait fonctionner correctement. Il réinitialisera la configuration pour openssh et devrait revenir à 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 que celle-ci a changé, de sorte qu’elle n’est plus reconnue. Dans ce cas, vous devrez éditer le fichier .ssh/authorized_keys pour supprimer la ligne problématique identifiant votre ubuntu.

3
MP0

C'est un vieux fil et je viens de rencontrer 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 jeté et il a dit d'exécuter cette commande afin de le supprimer de la liste des hôtes. Après cela, j'ai fait ce qui suit:

ssh-copy-id HOSTNAME

Puis j'ai suivi les instructions à partir de là jusqu'à ce que je puisse ssh dans le serveur.

3
Hatem Jaber

Cela signifie que votre clé d'hôte distant a été modifiée (peut être un changement de mot de passe d'hôte),

Votre terminal a suggéré d'exécuter cette commande en tant qu'utilisateur root

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231

Vous devez supprimer ce nom d’hôte de la liste des hôtes sur votre ordinateur/serveur. Copiez cette commande suggérée et exécutez-la en tant qu'utilisateur root.

$ Sudo su                                                            // Login as a root user

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231   // Terminal suggested command execute here
Host [www.website.net]:4231 found: line 16 type ECDSA
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

$ exit                                                               // Exist from root user

$ Sudo ssh [email protected] -p 4231                              // Try again

J'espère que ça marche.

2
Jay Patel

Vous devriez changer votre clé de la manière suivante: Trouvez dans votre erreur donnée quelle clé d’hôte a été modifiée, par exemple: Clé ECDSA incriminée dans /Users/user-name/.ssh/known_hosts:5, la cinquième clé a été modifiée, procédez comme suit:

sed -i '5d' ~/.ssh/known_hosts

Remarque: vous devez être root ou avoir le privilège de Sudo.

1
Amir.A.G

Peut-être avez-vous juste besoin d'entrer "oui" lorsque ssh confirme que vous souhaitez continuer à vous connecter.

Comme ci-dessous.

The authenticity of Host 'xxx' can't be established.
ECDSA key fingerprint is yyy.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'xxx' (ECDSA) to the list of known hosts.
Enter passphrase for key '/Users/ysy/.ssh/id_rsa':

Puis entrez votre mot de passe.

Veuillez faire attention à "Êtes-vous sûr de vouloir continuer à vous connecter (oui/non)? oui". Vous devez entrer oui, pas entrer.

1
JChen___

vous devez mettre la clé rsa de l'hôte cible dans l'hôte source /home/user/.ssh/known_hosts en l'exécutant sur la cible

ssh-keyscan -t rsa @targethost
1
rob brennan

Ma solution provient de cet article de blog: Échec de la négociation de l'algorithme pour le client SSH Secure Shell

Vous devez modifier le fichier comme suit:

Sudo nano /etc/ssh/sshd_config

Et puis ajoutez ce qui suit:

# Ciphers
Ciphers aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,arcfour
KexAlgorithms diffie-hellman-group1-sha1

En gros, vous avez essayé différentes solutions jusqu'à ce que vous en trouviez une qui puisse résoudre votre problème. Si les solutions ci-dessus ne fonctionnent pas, essayez celle-ci. Si celui-ci ne fonctionne pas aussi bien, veuillez en essayer d'autres.

0
Frank Puk

Désactivez simplement la vérification stricte de la clé d’hôte dans votre ~/.ssh/config:

Host *
StrictHostKeyChecking no
0
Timo

pico ~/.ssh/known_hosts et supprimez toutes les lignes, après juste vous reconnecter et vous obtiendrez une nouvelle clé.

0
H0nsu