241 votes

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

J'obtiens toujours 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 ça veut dire ? 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 ?

241voto

Josh Wright Points 1723

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

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 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, SHA-256 encodé en base64 est affiché à la place du MD5 hexadécimal. Pour afficher l'ancien style de hachage, utilisez

$ ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub

108voto

madmaze Points 3945

L'empreinte digitale est basée sur la clé publique de l'hôte, généralement basée sur le site /etc/ssh/ssh_host_rsa_key.pub fichier.  En général, c'est pour faciliter l'identification/vérification de l'hôte auquel vous vous connectez.

Si l'empreinte digitale change, la machine à laquelle vous vous connectez a modifié 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 dans le même domaine/IP (cela se produit lorsque vous vous connectez via quelque chose comme un équilibreur de charge) ou que vous êtes la cible d'une attaque de type "man-in-the-middle", où l'attaquant intercepte/route votre connexion ssh pour se connecter à un hôte différent qui pourrait espionner votre nom d'utilisateur/mot de passe.

En résumé : Si vous êtes averti d'un changement d'empreinte digitale, soyez prudent et vérifiez que vous vous connectez bien au bon hôte via une connexion sécurisée. Bien que la plupart du temps, cela soit inoffensif, cela peut être le signe d'un problème potentiel.

Ver: 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

82voto

andrew.n Points 1045

L'empreinte digitale est le MD5 sur les données binaires de 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 lors de la génération de la clé, mais sans les deux points de séparation. la clé est générée, mais sans les deux points de séparation.


Cependant, si vous avez affaire aux empreintes digitales qu'Amazon affiche dans la console EC2 Key Pairs, malheureusement, c'est une autre paire de manches . S'il s'agit d'une chaîne hexagonale de 32 chiffres, il s'agit de l'empreinte MD5 standard de la clé publique SSH ci-dessus. Mais s'il s'agit d'une chaîne de 40 chiffres hexagonaux, il s'agit en fait d'une empreinte digitale calculée en prenant le SHA1 de la clé publique SSH de 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

32voto

jsbueno Points 191

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

A partir de l'URL privée : https://github.com/<nom d'utilisateur>/<repo_name>/settings/keys vous verrez screenshot from github

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 fonctionnalité intéressante de GitHub, qui est le fait qu'ils servent publiquement les clés publiques SSH des utilisateurs à https://github.com/<username>.keys

Voici une phrase que vous pouvez utiliser pour en tirer parti.

$ 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

2voto

D.G. Points 541
ssh-keygen -r host.name.com

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

Ceux-ci peuvent ensuite être mis dans DNS SSHFP les dossiers.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X