2012-05-08 14:22:34 +0000 2012-05-08 14:22:34 +0000
147
147

Qu'est-ce qu'une empreinte de clé SSH et comment est-elle générée ?

Je trouve toujours que je reçois ce message lorsque je ssh dans une nouvelle machine :

12:f8:7e:78:61:b4:bf:e2:de:24:15:96:4e:d4:72:53

Qu'est-ce que cela signifie ? Chaque machine aura-t-elle la même empreinte digitale à chaque fois ?

Comment ces empreintes digitales sont-elles générées ? De quels paramètres dépendent-elles ?

Réponses (5)

128
128
128
2012-07-24 16:26:09 +0000

Vous pouvez générer une empreinte digitale pour une clé publique en utilisant ssh-keygen comme suit :

ssh-keygen -lf /path/to/key.pub

Exemple concret (si vous utilisez une clé publique RSA) :

$ ssh-keygen -lf ~/.ssh/id_rsa.pub
2048 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff /Users/username/.ssh/id_rsa.pub (RSA)

La première partie (2048) est la longueur de la clé en bits, la deuxième partie (00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff) est l'empreinte digitale de la clé publique et la troisième partie est l'emplacement du fichier de la clé publique lui-même.

Dans les versions plus récentes d'OpenSSH, le code SHA-256 codé en Base64 est affiché au lieu du code MD5 hexadécimal. Pour afficher le hachage de style hérité, utilisez

$ ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub
74
74
74
2014-02-08 20:40:35 +0000

L'empreinte digitale est le MD5 sur les données binaires dans la clé publique encodée en Base64.

$ ssh-keygen -f foo
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in foo.
Your public key has been saved in foo.pub.
The key fingerprint is:
65:30:38:96:35:56:4f:64:64:e8:e3:a4:7d:59:3e:19 andrew@localhost
The key's randomart image is:
+--[RSA 2048]----+
| +*..+* |
| =. +.= |
| . . .o . |
| o+ E |
| S= . + o |
| . o o + |
| . . |
| |
| |
+-----------------+
$ cat foo.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp andrew@localhost
$ echo 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp' \
    | base64 -D | md5
6530389635564f6464e8e3a47d593e19

Le md5sum 6530389635564f6464e8e3a47d593e19 est l'empreinte digitale affichée lorsque la clé est générée, uniquement sans les deux points de séparation. Cependant, si vous avez affaire aux empreintes digitales qu'Amazon affiche dans la console des paires de clés EC2 malheureusement, il se peut que ce soit une autre bête. S'il s'agit d'une chaîne hexagonale de 32 chiffres, il s'agit de l'empreinte de clé publique standard MD5 SSH ci-dessus. Mais si c'est une chaîne de 40 chiffres hexagonaux, c'est en fait une empreinte digitale calculée en prenant la SHA1 de la clé privée au format PKCS#8 :

$ openssl pkcs8 -in foo -nocrypt -topk8 -outform DER | openssl sha1 -c
e2:77:39:d3:53:a7:62:68:5f:da:82:0e:99:61:30:64:a2:88:c4:58
69
69
69
2012-05-08 14:41:50 +0000

L'empreinte digitale est basée sur la clé publique de l'hôte, généralement basée sur “/etc/ssh/ssh_host_rsa_key.pub”. C'est généralement pour faciliter l'identification/la vérification de l'hôte auquel vous vous connectez.

Si l'empreinte digitale change, la machine à laquelle vous vous connectez a changé sa clé publique. Ce n'est pas forcément une mauvaise chose (cela se produit lors de la réinstallation de ssh), mais cela peut également indiquer que vous vous connectez à une machine différente sur le même domaine/IP (cela se produit lorsque vous vous connectez via un dispositif d'équilibrage de charge) ou que vous êtes la cible d'une attaque de type “man-in-the-middle”, où l'attaquant intercepte/redirige votre connexion ssh pour se connecter à un hôte différent, ce qui peut être un moyen d'espionner votre utilisateur/pw.

*Résultat final : * si vous êtes averti d'un changement d'empreinte digitale, soyez prudent et vérifiez que vous vous connectez effectivement au bon hôte via une connexion sécurisée. Bien que la plupart du temps cela soit inoffensif, cela peut indiquer un problème potentiel

Voir : http://www.lysium.de/blog/index.php?/archives/186-How-to-get-ssh-server-fingerprint-information.html et : http://en.wikipedia.org/wiki/Public_key_fingerprint

23
23
23
2019-03-29 21:52:44 +0000

Si vous voulez vérifier un fichier de clé SSH pour voir s'il est identique à ce qui est signalé comme “Deploy key” par github, ceci est pour vous…

Depuis l'URL privée : https://github.com/\/<repo_name>/settings/keys vous verrez

Au terminal :

$ ls -l id*
-rw------- 1 bruno staff 1675 Mar 29 17:03 id_rsa
-rw-r--r-- 1 bruno staff 416 Mar 29 17:03 id_rsa.pub

$ ssh-keygen -E md5 -lf id_rsa
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e ec2-user@ip-10-2-1-16.ec2.internal (RSA)

$ ssh-keygen -E md5 -lf id_rsa.pub
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e ec2-user@ip-10-2-1-16.ec2.internal (RSA)

Vous remarquerez que vous obtenez la même empreinte digitale pour les clés privées et publiques.

Cette même commande peut être combinée avec une caractéristique intéressante de GitHub, qui est le fait qu'ils servent publiquement les clés publiques SSH des utilisateurs à https://github.com/\.keys

Voici une ligne que vous pouvez utiliser pour en tirer profit.

$ curl -sL https://github.com/RichardBronosky.keys | while read; do echo -e "\nkey #$((++i)):"; ssh-keygen -E md5 -lf - <<<"$REPLY"; echo $REPLY; done

key #1:
2048 MD5:07:b4:00:a4:65:ef:44:89:05:84:60:0c:c9:b2:36:5e no comment (RSA)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJGT35gvsFveu+80qgurrLHId0h55E9jliM7Fo0mV9b7eg3EfyagkAcJUSMFkoov3HY4CW0yzOc7WlN57ABwvpRz1ioFDex0n0FkjoSEs5ROeT1OneRK6Bf6XnplgPuQ/LSSkv3kmK6I29R+YWi6TjDvLLoA5BrXJjOMfUv36jxWCDtk/5ZdhMZqhsMuDm06Jg5JBu6n5jQaZkmaIaunz7vOfwVG9LoCI+MYyIdo2S4VTva7Ee7jfAvgSUUgHTjhzsPO0/Ww5a/Kz2ehXW27aJxj/QPLfYR2LmTMbQKm3WpB8P1LjoiU7zjPoVoZ43a4P2JLUDidGKCd3eY5b5xewz

key #2:
2048 MD5:f7:98:f1:0b:73:c6:2a:21:00:7a:70:1d:0f:cf:d8:cc no comment (RSA)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCQsZrjwKjB4WnE4SwVdDX5eEMxKzPHFBVKKpo9vvWUXRQwdTZy6iVOkyF26IPR+xDPzslzXOClKXUrWEh6La/EMpRwuMrWAbMIJFeDHOb56q4azgopoJmMJHo0yxGu0Ts4XszMACYRhlG6uK2AP5SYiOTp1zKPFjazXAdwLXyOvJurzy6KKuGJdSs/sj9+4uehgyRNOhehCSfg71tJJYwRvO2DDfLgaVEKOgZx58gEnJfhhz9D7rbvdZNhw/hCgtVNJaQF9Mdke2OPwWSo8i0/XNb9Bu/GRXqwMZrxDBhyzieocW40cwuzxWfzoi03aISdtQ1HtawH8+/sswviM1+B
1
1
1
2017-11-26 04:32:06 +0000
ssh-keygen -r host.name.com

produira les empreintes digitales de toutes les clés publiques configurées sur une instance sshd.

Ces empreintes peuvent ensuite être placées dans les enregistrements DNS SSHFP .