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

21

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.
myusuf3
la source
2
En passant, vous souhaiterez peut-être éviter de vous connecter localement et à distance en tant que root, et utiliser à la place des utilisateurs non privilégiés combinés avec sudo.
Steve Beattie

Réponses:

12

Avez-vous récemment réinstallé le système d'exploitation sur votre serveur ou quelque chose comme ça? Cela provoquerait cela.

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

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

Utilisez l' -Roption pour supprimer toutes les clés appartenant au nom d'hôte 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

Maintenant, vous pouvez vous connecter à l'hôte sans problème.

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

Il n'est pas nécessaire de supprimer l'intégralité du fichier known_hosts, juste la ligne incriminée dans 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 2è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 suivant

$ vi ~/.ssh/known_hosts

Allez maintenant à 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 n'avez 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 obtiendrez une nouvelle invite pour ajouter la clé ~/.ssh/known_hostscomme 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.
Isaïe
la source
9
Notez que si vous n'avez PAS modifié les clés d'hôte SSH de votre serveur, vous ne devez pas remplacer votre copie de la clé d'hôte, car cela peut être un signe que quelqu'un tente de subvertir vos communications en effectuant une attaque de type intermédiaire.
Kees Cook
7

D'après ce que je peux dire, toutes ces réponses visent à supprimer l'avertissement, au lieu de le traiter. En bref, l'avertissement vous indique que le serveur ne ressemble plus à ce qu'il était; voir https://en.wikipedia.org/wiki/Man_in_the_middle_attack pour savoir pourquoi cela peut être un danger.

Lisez man ssh, en particulier cette section:

VÉRIFICATION DES CLÉS HÔTE

Lors de la première connexion à un serveur, 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 à l'aide de ssh-keygen (1) :

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

Pour être sûr, vous (ou quelqu'un de confiance) devez d'abord exécuter cette commande 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, souvent, vous ne disposez pas de ces informations, mais si vous avez des raisons de soupçonner que quelque chose se passe, l'exécution de cette commande est le moyen de vérifier si la signature du serveur a vraiment changé ou s'il peut y avoir quelque chose de suspect.

déconcerter
la source
1
Utilisez-le si votre hôte fournit une empreinte digitale sha256 au lieu d'un hachage md5. ssh -o FingerprintHash=md5 example.org
Declan McKenna
1
Plus d'informations sur FingerprintHash: superuser.com/questions/929566/… (c.-à-d. Sha256 devrait être préféré, mais vous ne connaissez peut-être pas cette valeur si vous n'avez pas assez mis à niveau récemment)
décompressez
2

J'ai rencontré le même problème et si vous ne souhaitez pas supprimer l'intégralité du known_hostsfichier, vous pouvez exécuter la commande suivante:

ssh-keygen -R 10.10.10.69

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

theTuxRacer
la source
0

Si vous pensez qu'avertir un faux positif, vous pouvez supprimer vos / root / ssh / known_hosts pour démarrer une nouvelle vérification.

Ta Coen
la source
3
Veuillez ne pas le faire, vous perdrez les autres hôtes connus. Au lieu de cela, si vous êtes sûr qu'il s'agit d'un faux positif, supprimez la ligne spécifique: "known_hosts: 8" ligne 8 dans ce cas.
Roger Light
0

Si vous avez récemment réinstallé le serveur ou changé la clé d'hôte, il est probablement sûr de supprimer la ligne 8 de votre fichier ~ / .ssh / known_hosts et de rajouter le serveur (en y accédant et en répondant "oui "lorsqu'il demande une vérification des clés)

elzapp
la source
0

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

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

Popinou
la source
Les gens peuvent toujours jouer des tours sur un réseau local. Les réseaux d'entreprises ou d'écoles pourraient avoir beaucoup de place pour ne pas être fiables.
Azendale
0

ssh -q fait aussi cette astuce.

Habituel
la source
0

Copiez cette ligne, mais entrez le nom d'utilisateur et le nom d'hôte / IP pour useret 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.

dheerendra
la source
0

Sur le nœud client où vous émettez le ssh,

vi ~/.ssh/known_hosts

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

Anthony Awuley
la source