web-dev-qa-db-fra.com

Avertissement "l'identification de l'hôte distant a changé" lors de la connexion via SSH

J'ai reçu ce message aujourd'hui en essayant de me connecter à mon serveur. Que devrais-je faire? Que se passe-t-il?

$ ssh 10.10.10.69
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
3d:1b:02:9e:b2:b8:f0:f7:c6:4f:94:96:f6:e3:c0:d1.
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:8
RSA Host key for 10.10.10.69 has changed and you have requested strict checking.Host key verification failed.
19
myusuf3

Avez-vous récemment réinstallé le système d'exploitation sur votre serveur ou quelque chose du genre? Cela causerait ceci.

Pour résoudre ce problème: http://www.cyberciti.biz/faq/warning-remote-Host-identification-has-changed-error-and-solution/

Solution n ° 1: Supprimez les clés à l'aide de ssh-keygen

Utilisez l'option -R pour supprimer toutes les clés appartenant à hostname à partir d'un fichier known_hosts. Cette option est utile pour supprimer les hôtes hachés. Si votre nom d'hôte distant est server.example.com, entrez:

$ ssh-keygen -R {server.name.com}
$ ssh-keygen -R {ssh.server.ip.address}
$ ssh-keygen -R {ssh.server.ip.address} -f {/path/to/known_hosts}
$ ssh-keygen -R server.example.com

Vous pouvez maintenant vous connecter à l'hôte sans problème.

Solution n ° 2: Ajouter la clé d'hôte correcte dans /home/user/.ssh/known_hosts

Il n'est pas nécessaire de supprimer tout le fichier known_hosts, mais uniquement la ligne incriminée de ce fichier. Par exemple, si vous avez 3 serveurs comme suit.

myserver1.com,64.2.5.111 ssh-rsa  
 AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0EnGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0E
nGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94H+uv304/ZDz6xZb9ZWsdm+264qReImZzruAKxnwTo4dcHkgKXKHeefnBKyEvvp/2ExMV9WT5DVe1viVw
    k=
    myserver2.com,125.1.12.5 ssh-rsa
 AAAAB3NzaC1yc2EAAAABIwAAAQEAtDiERucsZzJGx/1kUNIOYhJbczbZHN2Z1gCnTjvO/0mO2R6KiQUP4hOdLppIUc9GNvlp1kGc3w7B9tREH6kghXFiBjrIn6VzUO4uwrnsMbnAnscD5EktgI7fG4ZcNUP 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGxQz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/IyI4NxHhhpltYZKW/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBf
    w=
    myserver3.com,125.2.1.15 ssh-rsa 
 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGx0lVkphVsvYD5hJzm0eKHv+oUXRT9v+QMIL+um/IyI4NxHhhpltYZKW
 as3533dka//sd33433////44632Z6MGnAazIviHBldxtGrFwvEnk82/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBfw==

Pour supprimer le deuxième serveur (myserver.com), ouvrez le fichier:

# vi +2 .ssh/known_hosts

Et appuyez sur la commande dd pour supprimer la ligne. Enregistrez et fermez le fichier. Ou utilisez ce qui suit

$ vi ~/.ssh/known_hosts

Maintenant, allez à la ligne 2, tapez la commande suivante

:2

Maintenant, supprimez la ligne avec dd et quittez:

dd
:wq

Ou vous pouvez utiliser la commande sed comme suit pour supprimer la clé incriminée à la ligne 44:

$ sed -i 44d ~/.ssh/known_hosts

Solution 3: supprimez simplement le fichier known_hosts si vous ne possédez qu'un seul serveur ssh

$ cd
$ rm .ssh/known_hosts
$ ssh ras.mydomain.com

Essayez de vous connecter à nouveau avec ssh
Vous devriez maintenant pouvoir connecter votre serveur via ssh:

ssh username@server-ip-here
ssh [email protected]

Ensuite, vous recevrez une nouvelle invite à ajouter la clé à ~/.ssh/known_hosts comme suit:

The authenticity of Host '10.86.115.66 ()' can't be established.
ECDSA key fingerprint is 4e:10:42:39:53:85:7f:89:89:dc:89:84:8d:79:e7:ed.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.86.115.66' (ECDSA) to the list of known hosts.
11
Isaiah

D'après ce que je peux dire, toutes ces réponses concernent la suppression de l'avertissement, au lieu de le gérer. En bref, l'avertissement vous indique que le serveur ne ressemble pas à son apparence d'origine; voir https://en.wikipedia.org/wiki/Man_in_the_middle_attack pour savoir pourquoi cela peut constituer un danger.

Lire man ssh , en particulier cette section:

VÉRIFICATION DES CLÉS DE L'HÔTE

Lorsque vous vous connectez à un serveur pour la première fois, une empreinte digitale de la clé publique du serveur est présentée à l'utilisateur (sauf si l'option StrictHostKeyChecking a été désactivée). Les empreintes digitales peuvent être déterminées en utilisant ssh-keygen (1) :

   $ ssh-keygen -l -f /etc/ssh/ssh_Host_rsa_key

Pour plus de sécurité, vous (ou une personne de confiance) devez avoir exécuté cette commande en premier sur le serveur auquel vous vous connectez. Cela vous donnera une empreinte digitale ressemblant à celle donnée dans l'avertissement de la question. Bien sûr, vous n’avez souvent pas cette information, mais si vous avez des raisons de penser que quelque chose est en train de s’exécuter, l’exécution de cette commande est le moyen de vérifier si la signature du serveur a réellement changé ou s’il peut se produire quelque chose de suspect.

7
unhammer

J'ai rencontré le même problème et si vous ne souhaitez pas supprimer le fichier entier known_hosts, vous pouvez exécuter la commande suivante:

ssh-keygen -R 10.10.10.69

Il n'y a pas de problème avec la suppression des hôtes connus. Il vous suffira d'ajouter chaque serveur auquel vous vous connecterez à la liste à chaque fois que vous vous y connecterez. Vous risquez également de perdre vos scripts, car les hôtes ne sont pas encore fiables. L'alerte se produit lors de la signature de l'hôte (l'ordinateur que vous essayez de connecter aux nouvelles clés générées, généralement en raison d'une réinstallation ou d'une rotation de clés).

2
theTuxRacer

Sur le poste client sur lequel vous émettez le ssh,

vi ~/.ssh/known_hosts

Supprimez toutes les lignes commençant par des adresses IP se trouvant sur le même réseau que l'adresse IP dans laquelle vous essayez de ssh. Cela forcera le poste client à ajouter de manière permanente (ECDSA) à la liste des hôtes connus.

0
Anthony Awuley

Si vous croyez que l'avertissement est faux positif, vous pouvez supprimer votre/root/ssh/known_hosts pour lancer une nouvelle vérification.

0
Ta Coen

Si vous avez récemment réinstallé le serveur ou modifié la clé de l’hôte, il est probablement prudent de supprimer la ligne 8 de votre fichier ~/.ssh/known_hosts et de rajouter le serveur (en lui faisant ssh et en répondant "oui "quand il demande la vérification de la clé)

0
elzapp

Comme votre serveur est sur un réseau local, vous pouvez être assez confiant.

Si vous avez réinstallé votre système, cela est normal, mais au lieu de supprimer votre fichier known_hosts, je vous recommande de faire echo "" > ~/.ssh/known_hosts

0
Popinou

Copiez cette ligne, mais indiquez le nom d'utilisateur et le nom d'hôte/IP pour user et remote-server:

ssh-keygen -f "/home/user/.ssh/known_hosts" -R remote-server

Par exemple:

ssh-keygen -f "/home/dev1/.ssh/known_hosts" -R 192.168.199.108

Et collez-le sur votre terminal local et exécutez-le. Cela a fonctionné pour moi.

0
dheerendra

ssh -q fait aussi cette astuce.

0
Habitual