web-dev-qa-db-fra.com

Comment établir une paire de clés ssh lorsque "la vérification de la clé de l'hôte a échoué"

J'ai configuré des paires de clés ssh entre mon ordinateur de bureau et deux serveurs, et entre les serveurs sur mon ordinateur de bureau, mais après la réinstallation du système d'exploitation sur mon ordinateur de bureau, je ne peux pas rétablir la paire de clés allant dans mon ordinateur de la manière suivante: 

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t 
ssh-copy-id username@server

Je reçois l'erreur suivante:

(les noms en italiques ont été modifiés pour protéger l'innocent. Mon bureau est Ubuntu et je ne trouve pas la réponse ici )

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @ AVERTISSEMENT: L'IDENTIFICATION DE L'Hôte À DISTANCE A CHANGÉ @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ IL EST IS POSSIBLE QUE QUELQU'UN IS FAIT QUELQUE CHOSE DE MAUVAIS!.. Quelqu'un pourrait vous espionner tout de suite (homme-au-milieu Attaque)! Il est également possible que la clé de l'hôte RSA ait été modifiée . L’empreinte digitale de la clé RSA envoyée par l’hôte distant est ab: cd: ef: gh Veuillez contacter votre administrateur système. Ajoutez la clé d’hôte correcte dans/home/utilisateur /. Ssh/known_hosts pour obtenir débarrasser de ce message . Touche offensive dans/home/user /. Ssh/known_hosts: 1 La clé de l'hôte RSA pour user.server a changé et vous avez demandé strict vérification. La vérification de la clé de l'hôte a échoué.

45
David LeBauer
ssh-keygen -R hostname

Cela supprime la clé en cause du known_hosts

L'entrée de la page de manuel se lit comme suit:

-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).

106
RobAu

Très probablement, l'adresse IP ou l'adresse_hôte de l'hôte distant ne se trouve pas dans le fichier ~/.ssh/known_hosts Vous pouvez utiliser la commande suivante pour ajouter le nom d’hôte au fichier known_hosts.

$ssh-keyscan -H -t rsa ip_or_ipalias >> ~/.ssh/known_hosts

De plus, j'ai généré le script suivant pour vérifier si l'adresse IP ou ipalias particulière se trouve dans le fichier know_hosts.

#!/bin/bash
#Jason Xiong: Dec 2013   
# The ip or ipalias stored in known_hosts file is hashed and   
# is not human readable.This script check if the supplied ip    
# or ipalias exists in ~/.ssh/known_hosts file

if [[ $# != 2 ]]; then
   echo "Usage: ./search_known_hosts -i ip_or_ipalias"
   exit;
fi
ip_or_alias=$2;
known_Host_file=/home/user/.ssh/known_hosts
entry=1;

cat $known_Host_file | while read -r line;do
  if [[ -z "$line" ]]; then
    continue;
  fi   
  hash_type=$(echo $line | sed -e 's/|/ /g'| awk '{print $1}'); 
  key=$(echo $line | sed -e 's/|/ /g'| awk '{print $2}');
  stored_value=$(echo $line | sed -e 's/|/ /g'| awk '{print $3}'); 
  hex_key=$(echo $key | base64 -d | xxd -p); 
  if  [[ $hash_type = 1 ]]; then      
     gen_value=$(echo -n $ip_or_alias | openssl sha1 -mac HMAC \
         -macopt hexkey:$hex_key | cut -c 10-49 | xxd -r -p | base64);     
     if [[ $gen_value = $stored_value ]]; then
       echo $gen_value;
       echo "Found match in known_hosts file : entry#"$entry" !!!!"
     fi
  else
     echo "unknown hash_type"
  fi
  entry=$((entry + 1));
done
10
Jason Xiong

Si vous êtes sûr le serveur est correct, sed -i 1d ~/.ssh/known_hosts supprimera la ligne 1 de votre ~/.ssh/known_hosts local. La nouvelle clé correcte sera ajoutée au fichier lors de votre prochaine connexion.

5
ephemient

Étape 1: $ Bhargava.ssh # 

ssh-keygen -R 199.95.30.220

step2: $ Bhargava.ssh # 

ssh-copy-id nom_hô[email protected]

          Enter the the password.........

étape 3: Bhargava .ssh # 

ssh nom d'hô[email protected]

Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-68-generic x86_64) * Documentation: https://help.ubuntu.com/ Ubuntu 14.04.3 LTS server : 228839 ip : 199.95.30.220 hostname : qt.example.com System information as of Thu Mar 24 02:13:43 EDT 2016 System load: 0.67 Processes: 321 Usage of /home: 5.1% of 497.80GB Users logged in: 0 Memory usage: 53% IP address for eth0: 199.95.30.220 Swap usage: 16% IP address for docker0: 172.17.0.1 Graph this data and manage this system at: https://landscape.canonical.com/ Last login: Wed Mar 23 02:07:29 2016 from 103.200.41.50

nom_hôte @ qt: ~ $ 

4
Batchu Bhargava

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 indiquera que/dev/tty n’existe pas, alors qu’il existe.

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

2
peeyush

Tout d'abord, vous devez supprimer la clé existante. Les clés SSH de la plupart des systèmes d’exploitation Linux seront enregistrées dans ce fichier "/root/.ssh/known_hosts". Par conséquent, pour supprimer la clé associée à Host, la commande suivante sera utilisée:

ssh-keygen -f "/root/.ssh/known_hosts" -R [Hostname]

Cordialement K1

0
Keivan
rm -f /home/user/.ssh/known_hosts

ou ouvrez-le et supprimez l'entrée correspondant à l'adresse IP/nom d'hôte incriminé

(P.S. Il vous dit exactement cela dans le message d'erreur que vous avez posté)

0
Matt Phillips

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.

0
Jay Patel