Comment réparer la différence de clé d'hôte dans le fichier known_hosts lors d'une connexion rsync sur ssh

Comment réparer la différence de clé d'hôte dans le fichier known_hosts lors d'une connexion rsync sur ssh

linux

Comment ne plus avoir le message nous disant que la signature de notre clé (l'empreinte) ne correspond pas à celle qui se trouve dans le fichier known_hosts.

Voila le contexte :

Je souhaitais exécuter un script shell avec un ensemble de commandes rsync pour faire des copies et des synchronisations de fichiers et répertoires. Rsync est super pratique et adapté pour faire des backups, des copies récursives avec ou sans compression et bien plus. Je ne m'étends pas ici sur la puissance de la commande mais plutôt sur les problèmes de fingerprints (empreintes) de la clé publique dans le fichier ~/.ssh/known_hosts. Quand elle diffère de celle connue dans le fichier known_hosts. On a parfois des messages du style :

Warning: the ECDSA host key for 'domaine.com' differs from the key for the IP address 'xx.yy.ee.zz'
Offending key for IP in /monuser/.ssh/known_hosts:3
Matching host key in /monuser/.ssh/known_hosts:6

Solution 1 : désactiver la vérification de l'empreinte (fingerprint) de manière globale

On peut lancer la commande ssh-keygen -R Hostname : -R va supprimer toutes les clés appartenant à un nom d'hôte d'un fichier known_hosts Ce n'est pas une solution à mettre en œuvre sur un serveur en production pour des raisons certaines de sécurité mais ça fonctionne.

Solution 2 (exemple avec Rsync)

Pour éviter d'avoir à confirmer son action Are you sure you want to continue connecting (yes/no)?, j'ai ajouté la directive ssh dans ma commande rsync pour ne plus avoir la demande de confirmation qui arrête l'exécution de mon script. Cela ressemble à :

rsync -av  -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" utilisateur@domaine.com:/source/de/mon/contenu /repertoire/de/destination

-a : mode archive (alias des options -rlptgoD) je vous laisse lire la doc pour plus de détails
-v : mode verbeux pour voir s'afficher les fichiers copiés et/ou supprimés
-e : l'option qui nous intéresse ici pour lancer une commande ssh qui va nous désactiver la vérification de l'empreinte de notre clé.

Exemple avec une commande ssh :

ssh -o 'StrictHostKeyChecking no' utilisateur@domaine.com

autre solution soufflée par un collègue :

On ajoute dans notre ~/.ssh/config

UserKnownHostsFile=/dev/null
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null

Avec cela vous n'avez plus le prompt pour répondre à la question Are you sure you want to continue connecting (yes/no)? et mon script s'exécute sans interruption.

Previous Post Next Post