web-dev-qa-db-fra.com

l'identification de l'hôte distant ssh a changé

J'ai réinstallé mon serveur et je reçois les messages suivants: 

[user@hostname ~]$ ssh root@pong
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 a Host key has just been changed.
The fingerprint for the RSA key sent by the remote Host is
6e:45:f9:a8:af:38:3d:a1:a5:c7:76:1d:02:f8:77:00.
Please contact your system administrator.
Add correct Host key in /home/hostname /.ssh/known_hosts to get rid of this message.
Offending RSA key in /var/lib/sss/pubconf/known_hosts:4
RSA Host key for pong has changed and you have requested strict checking.
Host key verification failed.

J'ai essayé diverses solutions trouvées sur Internet. Mon fichier known_hosts (normalement dans ~/.ssh/known_hosts) est dans /var/lib/sss/pubconf/known_hosts. J'ai essayé de le modifier, mais il reste dans un état. J'ai installé ipa-client et j'ai Fedora 19. Comment résoudre cet avertissement?

Toutes les réponses données jusqu’à présent ne fonctionnent que si Freeipa n’est pas installé.

Bonne réponse pour freeipa dans les commentaires ci-dessous de adrin ici .

469
Filip Dobrovolný

Voici la solution la plus simple 

ssh-keygen -R <Host>

Par exemple,

ssh-keygen -R 192.168.3.10

De ssh-keygen page de manuel :

  • -R hostname Supprime toutes les clés appartenant à hostname d'un fichier known_hosts. Cette option est utile pour supprimer les hôtes hachés (voir l’option -H ci-dessus).
879
Kashif Nazar

utilisation

ssh-keygen -R hostname

Un exemple avec une adresse IP/nom d’hôte serait:

ssh-keygen -R 168.9.9.2

Cela mettra à jour l'infraction de votre hôte à partir de la connu

166
ravi ranjan

J'ai eu cette même erreur après avoir recréé une image de Digital Ocean Ubuntu. J'ai utilisé la commande suivante avec l'adresse IP de mon serveur à la place de [IP_ADDRESS]

ssh-keygen -R [IP_ADDRESS]
102
Ben

Lorsque vous réinstallez le serveur, son identité change et vous commencez à recevoir ce message. Ssh n'a aucun moyen de savoir si vous avez changé le serveur auquel il se connecte, ou si un serveur au milieu a été ajouté à votre réseau pour détecter toutes vos communications - vous en êtes informé.

Supprimez simplement la clé de known_hosts en supprimant l'entrée correspondante:

sed '4d' -i /var/lib/sss/pubconf/known_hosts

Le 4d se trouve sur le compte de Offending RSA ...known_hosts:4

33
mockinterface

Le sledgehammer doit retirer chaque hôte connu d'un seul coup:

rm ~/.ssh/known_hosts

Je me heurte à cela car nous utilisons de petits sous-réseaux de serveurs de courte durée à partir d'une boîte de connexion, et avons souvent la réutilisation d'adresses IP internes de serveurs qui partagent la même clé ssh.

29
Andy Hayden

Le problème est que vous avez déjà accepté une connexion SSH avec un ordinateur distant et que l'empreinte numérique de cet ordinateur distant ou la clé de hachage SHA256 a changé depuis votre dernière connexion. Ainsi, lorsque vous essayez à nouveau SSH ou utilisez github pour extraire le code, qui utilise également SSH, vous obtenez une erreur. Pourquoi? Parce que vous utilisez la même adresse d'ordinateur distant qu'avant, mais l'ordinateur distant répond avec une empreinte digitale différente. Par conséquent, il est possible que quelqu'un usurpe l'ordinateur précédemment connecté. C'est un problème de sécurité. 

Si vous êtes sûr à 100% que l'ordinateur distant n'est pas compromis, piraté, spoofé, etc., il vous suffit de supprimer l'entrée de votre fichier known_hosts pour l'ordinateur distant. Cela résoudra le problème car il n'y aura plus d'incompatibilité avec les identifiants d'empreintes digitales SHA256 lors de la connexion.

Sur Mac, voici ce que j'ai fait:

1) Recherchez la ligne de sortie qui se lit RSA Host key for servername:port has changed and you have requested strict checking. Vous aurez besoin à la fois du nom de serveur et, éventuellement, du port de cette sortie du journal.

2) Sauvegardez le fichier hôtes connus SSH cp /Users/yourmacusername/.ssh/known_hosts /Users/yourmacusername/.ssh/known_hosts.bak

3) Recherchez la ligne contenant l'ancienne empreinte digitale de l'ordinateur et supprimez-la. Vous pouvez rechercher l'empreinte spécifique de l'ordinateur distant incriminé à l'aide du nom de serveur et du port de l'étape 1. nano /Users/yourmacusername/.ssh/known_hosts

4) CTRL-X pour quitter et choisir Y pour enregistrer les modifications

Maintenant, tapez ssh -p port servername et vous recevrez l'invite originale que vous avez faite lorsque vous avez essayé pour la première fois d'utiliser SSH sur cet ordinateur. Vous aurez ensuite la possibilité d'enregistrer l'empreinte SHA256 mise à jour de cet ordinateur distant dans votre fichier known_hosts. Si vous utilisez SSH sur le port 22, l'argument -p n'est pas nécessaire.

Tous les problèmes que vous pouvez restaurer le fichier known_hosts d'origine: cp /Users/yourmacusername/.ssh/known_hosts.bak /Users/yourmacusername/.ssh/known_hosts

22
anon58192932

Comme beaucoup l'ont déjà dit, utilisez ssh-keygen, c'est-à-dire.

ssh-keygen -R pong

Vous pouvez également envisager de désactiver temporairement la vérification de la clé de l'hôte:

ssh -oStrictHostKeyChecking=no root@pong
12
Stephen Quan

J'ai utilisé la solution mockinterface, bien que le sed -i ne fonctionne pas vraiment .__ Je l'ai résolu en supprimant la ligne à la main avec vim:

Sudo vim /var/lib/sss/pubconf/known_hosts

Vous pouvez utiliser n’importe quel autre éditeur de texte de votre choix, mais vous devrez probablement indiquer vos privilèges d’administrateur.

11
3nrique0

Travaille pour moi!

Erreur: Clé RSA incriminée dans/var/lib/sss/pubconf/known_hosts: 4

Cela indique que vous avez une clé RSA incriminée à la ligne no. 4

Solution 1 :

1. vi /var/lib/sss/pubconf/known_hosts

2. remove line no: 4.

3. Save and Exit, and Retry.

Solution 2:

ssh-keygen -R "you server hostname or ip"

OU

Solution 3:

sed -i '4d' /root/.ssh/known_hosts

Cela supprimera la ligne 4th de /root/.ssh/known_hosts en place (-i).

11
Sahil Gulati

En effet, les paramètres de votre ordinateur distant ont été modifiés. Supprimez vos clés actuelles pour cela.

vim /root/.ssh/known_hosts 

Supprimez la ligne de l'IP que vous connectez.

7
miota85

Les autres réponses ici sont bonnes et fonctionnent, de toute façon, j'ai résolu le problème en supprimant ~/.ssh/known_hosts. Cela résout le problème, mais ce n'est probablement pas la meilleure approche.

4
tjespe

Supprimez cette entrée de known_hosts en utilisant:

ssh-keygen -R *ip_address_or_hostname*

Cela supprimera l'adresse IP ou le nom d'hôte problématique du fichier known_hosts et essaiera de vous reconnecter.

À partir des pages de manuel:

-R hostname
Supprime toutes les clés appartenant à hostname d'un fichier known_hosts. Cette option est utile pour supprimer les hôtes hachés (voir l’option -H Ci-dessus).

4
Chaminda Bandara

Dans mon cas, cela est dû au fait que je j'avais déjà une connexion SSH avec une machine ayant la même adresse IP (disons 192.152.51.10) et que le système envisageait la clé RSA (stockée dans /home/nom_utilisateur/.ssh/hosts_connus) de l'hôte précédent, ce qui a entraîné une disparité.

Pour résoudre ce problème, vous devez supprimer la clé RSA précédemment stockée pour l'adresse IP 192.152.51.10.

ssh-keygen -f "/home/user_name/.ssh/known_hosts" -R 192.152.51.10
4
Prateek Joshi

Pour les utilisateurs Mac, vous pouvez utiliser l'indicateur -R de la commande ssh-keygen. Exemple rapide:

ssh-keygen -R THE_IP_ADDRESS

THE_IP_ADDRESS étant l'IP dans laquelle vous essayez de ssh. Et puis vous pouvez vous connecter bien.

3
Nick Rameau

Si vous essayez de vous connecter au conteneur Docker en cours d’exécution sur le port 2222 à l’aide de la commande et que vous obtenez l’erreur

mian@tdowrick2~$ ssh pos@localhost -p 2222

Ensuite, pour résoudre ce problème, sur votre ordinateur local (c’est-à-dire que la machine hôte ne contient pas de conteneur), accédez à cd ~/.ssh/ et ouvrez le fichier known_hosts avec l’éditeur de texte. Supprimez la ligne commençant par [localhost]:2222 et enregistrez le fichier. Maintenant, essayez à nouveau SSH 

mian@tdowrick2~$ ssh pos@localhost -p 2222

L'erreur disparaîtra mais vous devrez le faire à chaque redémarrage du conteneur.

2
Mian Asbat Ahmad

Seul problème côté client (clé dupliquée pour ip):

Résoudre les variantes:

Pour effacer une adresse IP (port 22 par défaut):

ssh-keygen -f -R 7.7.7.7

Pour une adresse IP ( non par défaut port):

ssh-keygen -f -R 7.7.7.7:333

Rapide effacer toutes les ips:

cd ~; rm .ssh/known_hosts

7.7.7.7 - ssh la connexion ip de votre serveur

333 - port non standard

2
Fortran

Une solution très simple: éditez /home/hostname /.ssh/known_hosts, supprimez la 4 ligne et sauvegardez-la. puis relancez ssh root@pong, vous verrez le message suivant: Are you sure you want to continue connecting (yes/no)? yes, imprimez simplement yes.

Cela fonctionne pour moi.

À propos: si vous rencontrez un problème, lisez d'abord les astuces, cela vous aidera.

2
Bluce Liu

J'ai eu la même erreur dans ma machine et j'ai effacé les fichiers authorized_keys et known_hosts, et après cela, tout fonctionne bien.

1
GoingMyWay

Ma solution est:

  1. vi ~/.ssh/known_hosts
  2. supprimez la ligne contenant votre adresse IP connectée.

C’est mieux que de supprimer tout le known_hosts

1
aircraft

J'ai eu ce problème, et la raison est très simple, j'ai une adresse IP en double pour la connexion SSH, donc après avoir modifié ce problème, tout est résolu.

1
Fan

Utilisez cette commande:

truncate -s 0 /home/SYSTEM_NAME/.ssh/known_hosts
1
Muktesh Kumar

Il suffit de faire:

cd /home/user/.ssh/ -> ici user sera votre nom d'utilisateur, par exemple /home/jon/ par exemple. 

Ensuite 

gedit known_hosts & et supprimez le contenu qu'il contient. 

Maintenant ssh encore, cela devrait fonctionner. 

0
ThePredator

Ma solution sur UBUNTU (linux):

1.Vous devez supprimer le contenu du fichier "known_hosts" qui se trouve dans "/home/YOUR_USERNAME/.ssh/known_hosts". 

2. Générez une nouvelle clé ssh telle que "ssh-keygen -t rsa -C" [email protected] "-b 4096"

3. Copiez-collez votre nouvelle clé ssh dans votre référentiel git (gitlab dans mon cas) clés SSH.

Ça marche pour moi !

0
Dionis Oros

SOLUTION:

1- Supprimez de "$ HOME/.ssh/known_hosts" la ligne faisant référence à l'hôte auquel il est impossible de se connecter.

2- exécutez cette commande: ssh-keygen -R "IP_ADDRESSorHOSTNAME" (remplacez "IP_ADDRESSorHOSTNAME" par l'adresse IP ou le nom d'hôte de destination).

3- Réessayer la connexion SSH (si elle échoue, veuillez vérifier l’autorisation sur le répertoire .ssh, elle doit être 700) 

0
DarkSkieS