web-dev-qa-db-fra.com

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

Je constate 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? Est-ce que chaque machine aura la même empreinte digitale à chaque fois?

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

109
Kit Ho

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é de clé publique. Ce n'est peut-être pas une mauvaise chose (cela se produit lors de la réinstallation de ssh), mais cela peut également indiquer que vous vous connectez à une autre machine du même domaine/IP (se produit lorsque vous vous connectez via un équilibreur de charge) ou que vous sont ciblés par une attaque intercepteur, dans laquelle l'attaquant intercepte/redirige votre connexion ssh pour se connecter à un autre hôte qui pourrait surveiller votre utilisateur/pw.

Résultat final: si vous êtes averti d'une empreinte digitale modifiée, soyez prudent et vérifiez bien que vous vous connectez au bon hôte via une connexion sécurisée. Bien que la plupart du temps, cela soit sans danger, 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

57
madmaze

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 seconde 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 clé publique elle-même.

88
Benjamin Oakes

L’empreinte digitale est le MD5 recouvrant les données binaires de la clé publique codé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

L'empreinte digitale md5sum 65303896965564f6464e8e3a47d593e19 est affichée lorsque la clé est générée, mais sans les deux points de séparation.


Toutefois, si vous traitez avec les empreintes digitales affichées par Amazon dans la console EC2 Key Pairs, malheureusement, ce peut être une autre bête . S'il s'agit d'une chaîne hexadécimale de 32 chiffres, il s'agit de l'empreinte digitale de clé publique MD5 SSH standard ci-dessus. Mais s’il s’agit de 40 chiffres hexadécimaux, il s’agit en fait d’une empreinte digitale calculée en prenant le SHA1 du 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
62
andrew.n
ssh-keygen -r Host.name.com

Générera les empreintes de toutes les clés publiques configurées sur une instance sshd.

Ceux-ci peuvent ensuite être placés dans DNS SSHFP records.

0
Mike Schroll