Message d’erreur
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
Également affiché sous la forme
- IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
- Offending ED25519 key in /root/.ssh/known_hosts:1
Affiché sous la forme d’un bloc entre des lignes de caractères `@`, suivi de l’empreinte de la nouvelle clé, de la ligne de known_hosts en cause et de « Host key verification failed. ».
OpenSSH client — host key differs from the one recorded in known_hosts
Ce que cela signifie
Le serveur a présenté une clé d’hôte différente de celle enregistrée pour ce nom d’hôte ou cette adresse dans `known_hosts`. ssh ne peut pas distinguer un changement légitime (réinstallation, nouvelle machine derrière la même IP) d’une interception de la connexion : il refuse donc de continuer en mode batch et, dans les autres cas, désactive l’authentification par mot de passe et keyboard-interactive. La ligne « Offending … key in …:N » vous indique quelle ligne de known_hosts contient l’ancienne clé.
Pourquoi cela se produit
Le serveur a été reconstruit
fréquenteUne réinstallation, un redéploiement à partir d’une image ou un conteneur qui génère ses clés d’hôte au démarrage crée de nouvelles clés d’hôte sous le même nom.
L’adresse appartient désormais à une autre machine
fréquenteLes adresses IP cloud et les baux DHCP sont recyclés. Une entrée enregistrée par adresse IP conserve la clé de l’ancienne machine.
Plusieurs hôtes aux clés différentes derrière un même nom
occasionnelleUn DNS round-robin ou un répartiteur de charge TCP placé devant des serveurs qui ne partagent pas leurs clés d’hôte fait apparaître l’avertissement de façon aléatoire.
Quelqu’un s’est interposé
rareRare, mais c’est précisément ce que cette vérification doit détecter : un réseau compromis, un Wi-Fi malveillant ou un détournement DNS qui répond avec sa propre clé. Vérifiez avant d’accepter.
Comment corriger l’erreur
- 1.
Vérifier la nouvelle clé, puis remplacer l’entrée
Comparez la nouvelle empreinte avec celle d’une source de confiance ; ensuite seulement, supprimez l’ancienne ligne avec `ssh-keygen -R` (par nom et par adresse IP).
bash # 1. Get the new fingerprint from a trusted channel (cloud console, provisioning logs, the admin) ssh-keyscan -t ed25519 server.example.com 2>/dev/null | ssh-keygen -lf - # 2. Only if it matches: remove the old entry and connect again ssh-keygen -R server.example.com ssh-keygen -R 203.0.113.10 - 2.
Utiliser des certificats d’hôte SSH pour les parcs de serveurs
Les clients qui font confiance à une AC d’hôtes acceptent les serveurs reconstruits dont les nouvelles clés sont signées par cette AC, sans épinglage par hôte.
text # known_hosts: trust host keys signed by your SSH CA instead of pinning each key @cert-authority *.internal.example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... ssh-host-ca