Il semble que openssh a changé la façon dont il affiche les empreintes digitales clés.
J'essaye de ssh d'une machine cliente à un serveur:
- client: ubuntu 14.04 exécutant OpenSSH 6.6.1
- serveur: FreeBSD exécutant OpenSSH 7.2p2.
Le client signale le hachage md5 de la clé du serveur comme une séquence de 16 paires de chiffres hexadécimaux, comme ceci:
a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a
Le serveur utilise par défaut le hachage sha256, mais grâce à cette réponse, je peux le forcer à donner le hachage sha1 en exécutant:
[root@host /etc/ssh]# ssh-keygen -l -E sha1 -f ssh_host_ecdsa_key.pub
Je veux que le résultat ressemble à ceci:
a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a
mais à la place j'obtiens ceci:
256 SHA1:KIh0ejR4O+RqrSq7JdGAASddRfI [email protected] (ECDSA)
Il me semble qu'une version codée en base64 de l'empreinte digitale est maintenant affichée à la place des chiffres hexadécimaux.
Comment puis-je obtenir la somme de contrôle de la clé du serveur dans le même format que celui rapporté par le client (plus ancien) (chiffres hexadécimaux séparés par deux-points, hachage sha1) afin de vérifier qu'ils sont les mêmes?
EDIT: L'ancienne version de SSH donne la somme de contrôle md5 , pas la somme de contrôle sha1 comme je le pensais à tort. L'utilisation de cette somme de contrôle (comme devrait l'indiquer la réponse maintenant acceptée) dans l'option -E donne la sortie souhaitée.
sha1
au lieu demd5
! J'ai une version d'Ubuntu obsolète avec openssh-6.9, mais cela fonctionne très bien.Il s'avère que le livre de recettes SSH a un moyen de générer manuellement des clés dans l'ancien format hexadécimal. Je l'ai utilisé sur le serveur freebsd.
Décomposer cela:
imprimer la deuxième colonne (séparée par des espaces) dans "key.pub", qui est la clé elle-même
la clé est codée en base64. Cela produira les octets réels de la clé
c'est l'équivalent de freebsd du 'md5sum -b' qui a été spécifié dans la recette sur la page du livre de cuisine ssh
Il existe deux commandes sed ici:
remplacer chaque paire de caractères de la ligne (grâce au drapeau 'g' à la fin) par cette même paire suivie de deux points
supprimer les deux-points de fin (remplacer un deux-points suivi d'un espace suivi de quoi que ce soit jusqu'à la fin de la ligne avec rien).
la source
Dans des cas comme celui-ci, j'utilise le petit script suivant (testé sur Debian et Ubuntu):
Exemple d'utilisation:
la source