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é.
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).
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
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.
É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: ~ $
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.
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
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é)
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.