J'ai le message d'avertissement bien connu lorsque j'essaie de ssh dans un serveur:
$ ssh whateverhost
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/user/.ssh/known_hosts:10
ECDSA host key for ipofmyhost has changed and you have requested strict checking.
Host key verification failed.
Et je sais pourquoi parce que j'ai changé l'ip d'un tel serveur. Mais si ce n'était pas le cas, comment pourrais-je vérifier l'empreinte digitale de la clé ECDSA envoyée par l'hôte distant?
J'ai essayé de le faire en:
echo -n ipofthehost | sha256sum
Mais je n'ai pas la même empreinte digitale. J'ai aussi essayé "hostname, ip" un peu comme dans aws mais je n'ai rien trouvé.
Si je supprime l'entrée de mon fichier known_hosts et que j'essaie à nouveau de ssh, il réussit et indique ce qui suit:
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Are you sure you want to continue connecting (yes/no)?
Alors, à quoi applique-t-il le sha256sum pour obtenir l'empreinte digitale et comment puis-je le vérifier?
ssh
fingerprint
gugol
la source
la source
/etc/ssh/ssh_host_ecdsa_key.pub
pour obtenir l'empreinte digitale. Je viens de faire.Réponses:
Une empreinte digitale de clé publique n'est pas le simple hachage d'une chaîne IP.
Pour récupérer une clé publique d'hôte distant, vous pouvez utiliser
ssh-keyscan <IP>
puis vous pouvez utiliser les outils habituels pour extraire son empreinte digitale (ssh-keygen -lf <public_key_file>
).Enfin, vous pouvez comparer à l'empreinte digitale actuelle dans votre
known_hosts
fichier avecssh-keygen -l -F <domain_or_ip>
.la source
ssh -oHostKeyAlgorithms='ecdsa-sha2-nistp256' [email protected]
), cela me donne une empreinte digitale alphanumérique à 43 chiffres (ECDSA key fingerprint is SHA256:sBKcTiQ5V.... etc.
) mais quand je cours,ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
j'obtiens un hex de 32 caractères ??ssh-keygen
(ou votre fournisseur de serveur n'a pas suivi l'heure et ne fournit toujours que des hachages md5 au lieu du nouveau SHA256). Il existe des solutions de contournement répertoriées ici: superuser.com/questions/929566Un peu plus en détail : le message d'avertissement faisant référence à l'empreinte digitale de la clé ECDSA envoyée par l'hôte distant, nous recueillons les informations sur la clé publique (ecdsa) de l'hôte:
Ensuite, nous pouvons découvrir où dans notre fichier known_hosts se trouve cette clé publique (ecdsa):
Si nous voulons comparer les empreintes digitales que nous devons mettre le contenu de notre fichier known_hosts (juste l'entrée liée à cet hôte), nous pouvons l'appeler ecdsa_file_from_known_hosts puis les comparer comme suit:
Et vérifiez si le spectacle a le même hachage.
Bien sûr, ils ne correspondent pas, c'est pourquoi j'ai reçu le message d'avertissement (ssh vérifie cette correspondance en interne). Si nous sommes sûrs du changement d'ip (donc nous ne subissons pas d'attaque de l'homme du milieu), nous pouvons simplement supprimer l'entrée de cet hôte dans notre fichier known_hosts et la prochaine fois que nous y ajouterons une nouvelle entrée pour il sera ajouté à ce fichier.
la source