web-dev-qa-db-fra.com

récupère l'empreinte de la clé SSH au format hexadécimal sur la nouvelle version d'Opensh

Il semble que openssh ait changé la façon dont il affiche les empreintes digitales des clés.

J'essaie de passer d'une machine cliente à un serveur ssh:

  • client: Ubuntu 14.04 exécutant OpenSSH 6.6.1
  • serveur: FreeBSD sous OpenSSH 7.2p2.

Le client rapporte le hachage md5 de la clé du serveur sous la forme d'une séquence de 16 paires de chiffres hexadécimaux, comme suit:

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 je reçois ceci:

256 SHA1:KIh0ejR4O+RqrSq7JdGAASddRfI [email protected] (ECDSA)

Il me semble qu’une version codée en empreinte base64 est maintenant affichée au lieu 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 indiqué par le client (plus ancien) (chiffres hexadécimaux séparés par deux points, hachage sha1) afin de vérifier qu'ils sont identiques ?

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 l'indique la réponse désormais acceptée) dans l'option -E donne le résultat souhaité.

27
stochastic

Le client rapporte le hachage sha1 de la clé du serveur sous la forme d'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

C'est le hash MD5.

Comme vous pouvez le voir courir

ssh-keygen -l -E md5 -f ssh_Host_ecdsa_key.pub

vous obtiendrez la même empreinte digitale dont vous avez besoin sans ce harakiri que vous expliquez dans votre réponse.

37
Jakuje

Il se trouve que le livre de recettes SSH permet de générer manuellement des clés au format hexadécimal plus ancien. Je l'ai utilisé sur le serveur FreeBSD.

awk '{print $ 2}' key.pub | base64 -d | md5 | sed 's /../&:/ g; s /:. * $ // '

Décomposer ceci:

awk '{print $ 2}' key.pub

affiche la deuxième colonne (séparée par des espaces) dans "key.pub", qui est la clé elle-même

base64 -d

la clé est encodée en base64. Cela affichera les octets réels de la clé

md5

c'est l'équivalent de 'md5sum -b' qui a été spécifié dans la recette sur la page du livre de recettes ssh de freebsd

sed 's /../&:/ g; s /:. * $ // '

Il y a deux commandes sed ici:

s /../&:/ g;

remplace chaque paire de caractères de la ligne (grâce au drapeau "g" à la fin) par cette même paire suivie d'un deux-points

s /:. * $ // '

supprime les deux-points finaux (remplacez-les par deux-points, suivis d'une espace, suivis de tout ce qui se trouve jusqu'au bout de la ligne sans rien).

4
stochastic

Dans ce cas, j'utilise le petit script suivant (testé sur Debian et Ubuntu):

#!/bin/sh

# Gather the public ssh Host keys for the given Host
# and for each key print the fingerprint in hex format using the given
# checksum command (e.g. md5sum, sha256sum, ...)

if [ "$#" != 2 ]; then
  echo "usage: $0 hostname checksum_command"
  exit 1
fi

ssh-keyscan $1 2>/dev/null | while read -r line; do
  echo "Scanned key:"
  echo $line
  echo "$2 fingerprint:"
  echo $line | awk '{print $3}' | base64 -d | $2 -b | awk '{print $1}' | sed 's/../&:/g' | sed 's/:$//'
  echo
done

Exemple d'utilisation:

$ myscript Host.example.com md5sum
Scanned key:
Host.example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJUXq7vpcEpnZQxxiLw/tdg8ui4LoqbW1O5nGyLtGw49
md5sum fingerprint:
6c:ef:26:f7:98:ad:ed:5b:cc:ff:83:13:46:c9:f6:79

Scanned key:
Host.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC4aLMajBvisnWNR2VX5K1KEkNeRmzlcs+svbY6/DiumMTZNtqB5duZjGkMmEbIclHaT7rQG9efAWsNhai5cJVRZ4VX1Gu/TLycEk4OY56MrrWjQYweSUr/W6E0eVCf7gh/ym2vMcevct4373fGDdlogk9Wa97lDV6PUXRy/znxRlo3tBc6KMOZIBoPu8UjeLr2ZPNPjO6hXX/96HbYfboxjhMl5eb8AWR0MGd4qU7RZZa2XhT4/4eSo8h9gEq8V3tasB24fMdw3K+HRiDyZm8uoNq+IrJlC22pBpzxRQtsv0Nd+uC5pK/UPVI3AFfdHMrmn7IHRio8aEaTloM6MRysGMtXE0kFQ/pV2U3TBmK/9wxID83qMDsQeUH4oTyjSJ0dCBuqgVQUg44z5qXVOK7gruvZSTyH7DsIyAXhlvLNwdtXPJ4HPQ90ZxLpiFWYgSPErQgbfgKeFkoSQiSP1M+UMkITCGRKMeUeDINheRJh/5y8+C3DjE54xyI4903ztyI7HqgVTOOFCtf+dlhCuS6+J20PFXEHDMdGCwmPQrKOG9Rb4NBxuvtn7MxJnwnlIu3nhDjr8SlZDOTvuK+bLpc4AZwEsNY7ANKFvj2mqE6hjkhu+x7khg84VQ6BKOmHIQnMrCpqICaNgB7Vz2d183BETrnfKQaPh79G5cQox5vwvw==
md5sum fingerprint:
b2:9c:cd:30:b1:38:e3:d1:17:d6:73:eb:03:9a:80:83

$ myscript Host.example.com sha256sum
Scanned key:
Host.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC4aLMajBvisnWNR2VX5K1KEkNeRmzlcs+svbY6/DiumMTZNtqB5duZjGkMmEbIclHaT7rQG9efAWsNhai5cJVRZ4VX1Gu/TLycEk4OY56MrrWjQYweSUr/W6E0eVCf7gh/ym2vMcevct4373fGDdlogk9Wa97lDV6PUXRy/znxRlo3tBc6KMOZIBoPu8UjeLr2ZPNPjO6hXX/96HbYfboxjhMl5eb8AWR0MGd4qU7RZZa2XhT4/4eSo8h9gEq8V3tasB24fMdw3K+HRiDyZm8uoNq+IrJlC22pBpzxRQtsv0Nd+uC5pK/UPVI3AFfdHMrmn7IHRio8aEaTloM6MRysGMtXE0kFQ/pV2U3TBmK/9wxID83qMDsQeUH4oTyjSJ0dCBuqgVQUg44z5qXVOK7gruvZSTyH7DsIyAXhlvLNwdtXPJ4HPQ90ZxLpiFWYgSPErQgbfgKeFkoSQiSP1M+UMkITCGRKMeUeDINheRJh/5y8+C3DjE54xyI4903ztyI7HqgVTOOFCtf+dlhCuS6+J20PFXEHDMdGCwmPQrKOG9Rb4NBxuvtn7MxJnwnlIu3nhDjr8SlZDOTvuK+bLpc4AZwEsNY7ANKFvj2mqE6hjkhu+x7khg84VQ6BKOmHIQnMrCpqICaNgB7Vz2d183BETrnfKQaPh79G5cQox5vwvw==
sha256sum fingerprint:
f4:61:58:e4:90:65:c4:70:98:7f:d1:40:0a:d8:d9:79:14:e6:91:dc:b6:ed:91:8c:c0:df:d9:65:db:dd:a0:18

Scanned key:
Host.example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJUXq7vpcEpnZQxxiLw/tdg8ui4LoqbW1O5nGyLtGw49
sha256sum fingerprint:
4b:73:d1:d7:80:87:46:64:56:71:64:10:7a:66:83:9b:c7:58:39:0b:16:74:dd:9b:d9:4b:e5:d5:61:7e:99:45
2
rpr