GNU/Linux >> Tutoriels Linux >  >> Linux

Principes de base de l'administrateur système Linux :dépannage des échecs de Known_hosts

SSH est facile à utiliser et généralement sans problème. Mais, il y a ce petit fichier dans votre répertoire personnel qui peut devenir un problème rare pour ce protocole et cet outil omniprésents. L'entité incriminée est ~/.ssh/known_hosts dossier. Si vous ne le saviez pas, vous devriez vous familiariser maintenant. Ce dossier apparaîtra à un moment donné de votre carrière.

Si vous avez déjà vu le message suivant, vous pouvez soit paniquer à l'idée que quelqu'un tente de vous pirater, soit vous rendre compte que DHCP ou une autre anomalie vous a fait un sale coup :

$ ssh 192.168.1.84

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 ECDSA key sent by the remote host is
SHA256:I02UyJs2vS0ym4jWn5upAWZDqwu5RjMg4aM9hPq8G1k.
Please contact your system administrator.
Add correct host key in /Users/khess/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/khess/.ssh/known_hosts:4
ECDSA host key for 192.168.1.84 has changed and you have requested strict checking.
Host key verification failed.

Ce qui s'est passé ici, c'est que vous avez tenté de vous connecter à un système qui n'a plus l'adresse IP 192.168.1.84. Un système différent a cette adresse IP et SSH se plaint que vous pourriez être piraté. La réalité est souvent beaucoup moins excitante. Vos known_hosts le fichier peut ne pas se synchroniser avec la réalité réelle de l'hôte.

Plusieurs choses peuvent provoquer ce jeu de chaises musicales avec adresse IP. L'un des systèmes aurait pu être en panne pendant une période prolongée et lorsque le bail d'un autre était en place, il a saisi la prochaine adresse IP disponible. Un événement de correction suivi d'un redémarrage a entraîné l'acquisition par certains de vos systèmes d'adresses IP différentes. Le système a peut-être été réinstallé et une nouvelle identité générée, ou peut-être quelqu'un a-t-il été informé et a-t-il attribué des adresses IP statiques à vos systèmes de serveur. (Je pense que tous les serveurs devraient avoir des adresses IP statiques. Il en va de même pour tous les composants de support, tels que les routeurs, les commutateurs, les points d'accès, les appareils IoT, les caméras, les systèmes de salle de conférence et même les imprimantes. Seuls les appareils des utilisateurs finaux devraient avoir le privilège douteux d'acquérir des adresses IP aléatoires. J'ai mes raisons pour cette opinion ferme, que je partagerai dans un autre article plus tard.)

Quelle que soit la manière dont cela s'est passé, le système auquel vous vouliez vous connecter a une nouvelle adresse IP. Celui qui est également connu de votre système, mais avec une empreinte digitale différente.

Les known_hosts susmentionnés file est un simple fichier texte qui réside dans un répertoire caché (.ssh ) dans votre répertoire personnel. Pour afficher son contenu, saisissez la commande suivante :

$ cat .ssh/known_hosts

192.168.1.97 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMJWpXf8Ou/XJ1Q5YcIS5Me4GgN1F7AYHbvIPayfGqwd90kvhQygrPCYEqVdw44lEOIZe+DEKP4F6Otdt38yf68=

192.168.1.101 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJRNTZm8M9IYYN3uJL/yCPv4EJRMDZkkcnt1CY8L6OR84wstYdhqtNqV0v/LQiz/AoRbHKxPTdjXfIOrc1vYDHc=

ken,192.168.1.69 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBB53lh2RyFiMfJFKBkLa643lS4GGILG6oVGq33KyBSgaDU2ZHryYak1FU1HcPa6Xb/xYqEUugv9cOXFRwajbrmg=

192.168.1.84 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMGjMsJPX4bfdEnVy59Uf2VhH1oAt7Zemd5bfSoSGxX69HBcjkekO/LkEZUlhVplBlHFqJBqs2gWYp3zVDCTwr4=

192.168.1.64 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIkK9WylcZcgjT7gUz9DMLehUBApION1CLiBVc3Pa/YfAbIDUlIWta12zL5B12RmBXgoYvntdW5rcowPiqjL0/o=

La solution simple à ce problème est de supprimer les known_hosts file et autorisez la génération de nouvelles clés pour chaque hôte auquel vous vous connectez. Pour cette démonstration, j'ai supprimé le 192.168.1.84 entrée de known_hosts fichier, puis connectez-vous au nouvel hôte à cette adresse, afin que vous puissiez voir une comparaison de ce qui se passe dans le processus. Tout d'abord, supprimez un known_hosts entrée avec le ssh-keygen commande :

$ ssh-keygen -R 192.168.1.84 -f .ssh/known_hosts

 Host 192.168.1.84 found: line 4
.ssh/known_hosts updated.
Original contents retained as .ssh/known_hosts.old

L'entrée d'origine est enregistrée dans .ssh/known_hosts.old au cas où cela serait nécessaire à l'avenir.

Après avoir supprimé le 192.168.1.84 entrée du  known_hosts fichier, j'ai tenté à nouveau de me connecter à l'hôte 192.168.1.84 :

$ ssh 192.168.1.84
The authenticity of host '192.168.1.84 (192.168.1.84)' can't be established.
ECDSA key fingerprint is SHA256:I02UyJs2vS0ym4jWn5upAWZDqwu5RjMg4aM9hPq8G1k.
Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.1.84' (ECDSA) to the list of known hosts.

Vous pouvez voir que la clé que j'ai ajoutée correspond maintenant à celle répertoriée dans l'erreur au début de l'article. Pour valider la clé d'un hôte, exécutez la commande suivante sur l'hôte distant :

$ ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
256 SHA256:I02UyJs2vS0ym4jWn5upAWZDqwu5RjMg4aM9hPq8G1k no comment (ECDSA)

Conclusion

À moins que vous n'utilisiez des adresses IP statiques et que vos systèmes ne changent jamais, vous rencontrerez ce problème à un moment donné de votre carrière. Cela m'arrive tout le temps car je crée et détruis des machines virtuelles plusieurs fois par mois. En fait, cela arrive si souvent que je devrais maintenant avoir un script qui supprime les known_hosts fichier au début de chaque mois.

Idéalement, vous n'auriez jamais à supprimer une entrée de known_hosts fichier (ou le fichier entier). Mais si vous devez le faire, vous venez d'apprendre à le faire.

Points à retenir :known_hosts , ssh-keygen

[Vous voulez essayer Red Hat Enterprise Linux ? Téléchargez-le maintenant gratuitement.]


Linux
  1. Bases des autorisations de fichiers Linux

  2. Principes de base de l'administrateur système Linux :gestion des comptes d'utilisateurs avec les UID et les GID

  3. Principes de base de l'administrateur système Linux :gestion des comptes d'utilisateurs

  4. Mes 5 outils d'administration système Linux préférés

  5. Dépannage Linux 101 :performances du système

Un guide du débutant pour le dépannage du réseau sous Linux

Principes de base de l'administrateur système Linux :démarrer la carte réseau au démarrage

Principes de base de la ligne de commande Linux :sudo

Outils sysadmin :exa, une alternative moderne à ls sous Linux

Introduction aux cgroups d'un administrateur système Linux

Principes de base de la liaison Ethernet sous Linux