1042 votes

Calculer l'empreinte de la clé RSA

Je dois faire l'audit de la clé SSH pour GitHub, mais je ne suis pas sûr de comment trouver l'empreinte de ma clé RSA. J'ai initialement suivi un guide pour générer une clé SSH sur Linux.

Quelle est la commande que je dois entrer pour trouver l'empreinte de ma clé RSA actuelle ?

27 votes

FWIW, je reviens toujours sur ce post parce que Github est l'endroit où je vois des empreintes digitales sur les clés et je veux m'assurer d'utiliser la clé privée correspondante. Peut-être qu'il justifie une balise Github puisque ce post aide cette demande liée à Github?

5 votes

@hamx0r Je suis revenu sur ce post parce que Gitlab utilise également ces empreintes digitales...

1 votes

Je suis arrivé à cause de Travis, qui l'utilise également. :D

1452voto

Marvin Pinto Points 8292

Exécutez la commande suivante pour récupérer l'empreinte digitale SHA256 de votre clé SSH (-l signifie "list" au lieu de créer une nouvelle clé, -f signifie "nom de fichier") :

$ ssh-keygen -lf /chemin/vers/clé/ssh

Par exemple, sur ma machine, la commande que j'ai exécutée était (en utilisant la 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)

Pour obtenir le format d'empreinte digitale GitHub (MD5) avec les nouvelles versions de ssh-keygen, exécutez :

$ ssh-keygen -E md5 -lf 

Informations supplémentaires :

ssh-keygen -lf fonctionne également sur les fichiers known_hosts et authorized_keys.

Pour trouver la plupart des clés publiques sur les systèmes Linux/Unix/OS X, exécutez :

$ find /etc/ssh /home/*/.ssh /Users/*/.ssh -name '*.pub' -o -name 'authorized_keys' -o -name 'known_hosts'

(Si vous souhaitez voir à l'intérieur des homedirs d'autres utilisateurs, vous devrez être root ou utiliser sudo.)

Le ssh-add -l est très similaire, mais liste les empreintes digitales des clés ajoutées à votre agent. (Les utilisateurs OS X noter que l'authentification magique sans mot de passe SSH via Keychain n'est pas la même que l'utilisation de ssh-agent.)

6 votes

Comment puis-je trouver quel est le chemin?

1 votes

Aussi, si vous voulez simplement la clé publique, exécutez : cat ~/.ssh/id_rsa.pub

4 votes

Puisque votre empreinte hexadécimale d'exemple comporte 32 chiffres, je crois qu'il s'agit d'une empreinte MD5, n'est-ce pas ? Contrairement à une empreinte de 40 chiffres, qui indiquerait SHA1.

712voto

antofthy Points 11

Les nouvelles commandes SSH afficheront les empreintes digitales comme une clé SHA256.

Par exemple :

ssh-keygen -lf ~/.ssh/id_dsa.pub 
1024 SHA256:19n6fkdz0qqmowiBy6XEaA87EuG/jgWUr44ZSBhJl6Y (DSA)

Si vous avez besoin de la comparer avec une ancienne empreinte digitale, vous devez également spécifier d'utiliser la fonction de hachage d'empreinte digitale MD5.

ssh-keygen -E md5 -lf ~/.ssh/id_dsa.pub
2048 MD5:4d:5b:97:19:8c:fe:06:f0:29:e7:f5:96:77:cb:3c:71 (DSA)

Aussi disponible : -E sha1

Mise à jour... OUI...oui... Je sais... Les clés DSA pour SSH ne devraient plus être utilisées, les anciennes clés RSA ou les nouvelles clés elliptiques devraient être utilisées à la place.

À ces 'admins' qui continuent d'éditer la commande que j'ai utilisée ci-dessus. ARRÊTEZ DE LA CHANGER! Vous provoquez un désaccord entre la commande et la sortie résultante!

7 votes

Il est intéressant de mentionner ici que vous pouvez demander à ssh de vous montrer l'ancienne empreinte MD5 du serveur en utilisant ssh -o FingerprintHash=md5 example.org, comme indiqué dans cette réponse. (Je cherchais justement cela, et cette réponse m'a conduit à celle-ci, donc je suppose que d'autres pourraient avoir une expérience similaire.)

28 votes

Cette réponse est très utile pour ceux qui souhaitent comparer leurs clés avec ce que github.com montre (c'est-à-dire le format MD5 en hexadécimal)

2 votes

Aussi très utile pour comparer contre ce que Putty rapportera.

28voto

Komu Points 31

Pour voir votre clé sur Ubuntu, il suffit d'entrer la commande suivante dans votre terminal :

ssh-add -l

Vous obtiendrez une sortie comme ceci : 2568 0j:20:4b:88:a7:9t:wd:19:f0:d4:4y:9g:27:cf:97:23 votreNom@ubuntu (RSA)

Cependant, si vous obtenez une erreur comme : Could not open a connection to your authentication agent.
Cela signifie que ssh-agent n'est pas en cours d'exécution. Vous pouvez le démarrer avec : ssh-agent bash (merci à @Richard dans les commentaires) puis réexécutez ssh-add -l

5 votes

Si vous n'êtes pas sur Ubuntu, vous pourriez malheureusement rencontrer l'erreur suivante : "Could not open a connection to your authentication agent."

1 votes

Cela fonctionne uniquement si vous avez l'agent d'authentification en cours d'exécution.

0 votes

Pour démarrer l'agent d'authentification, vous pouvez utiliser ssh-agent bash et continuer à vivre. Dans la vie, comme toujours, ssh-agent n'est pas garanti comme une implémentation cohérente sur tous les systèmes.

20voto

Wirawan Purwanto Points 312

Une paire de clés (les clés privée et publique) aura la même empreinte digitale; donc dans le cas où vous ne pouvez pas vous rappeler quelle clé privée correspond à quelle clé publique, trouvez la correspondance en comparant leurs empreintes digitales.

La réponse la plus votée par Marvin Vinto fournit l'empreinte digitale d'un fichier de clé SSH publique. L'empreinte digitale de la clé SSH privée correspondante peut également être consultée, mais cela nécessite une série d'étapes plus longue, comme indiqué ci-dessous.

  1. Chargez l'agent SSH, si vous ne l'avez pas déjà fait. La manière la plus simple est d'invoquer

    $ ssh-agent bash

    ou

    $ ssh-agent tcsh

    (ou tout autre shell que vous utilisez).

  2. Chargez la clé privée que vous voulez tester:

    $ ssh-add /chemin/vers/votre-clé-ssh-privée

    Vous devrez entrer la passphrase si la clé est protégée par mot de passe.

  3. Maintenant, comme d'autres l'ont dit, tapez

    $ ssh-add -l
    1024 fd:bc:8a:81:58:8f:2c:78:86:a2:cf:02:40:7d:9d:3c you@yourhost (DSA)

    fd:bc:... est l'empreinte digitale que vous recherchez. Si plusieurs clés sont chargées, plusieurs lignes seront imprimées, et la dernière ligne contient l'empreinte digitale de la dernière clé chargée.

  4. Si vous voulez arrêter l'agent (c'est-à-dire si vous avez invoqué l'étape 1 ci-dessus), tapez simplement `exit' dans le shell, et vous reviendrez au shell avant le chargement de l'agent SSH.

Je n'ajoute pas de nouvelles informations, mais j'espère que cette réponse est claire pour les utilisateurs de tous niveaux.

0 votes

Le premier paragraphe est faux, ssh-add -l et ssh-keygen -l retournent la même empreinte pour une paire de clés donnée. De plus, cela devrait être en minuscule -l, pas en majuscule.

0 votes

Je ne conteste pas que ssh-add -l et ssh-keygen -l retournent la même empreinte digitale pour une paire de clés donnée. Mais je ne comprends pas ce qui n'allait pas avec mes déclarations originales dans le premier paragraphe. J'ai ajouté une phrase pour clarifier.

1 votes

Il est plus simple de spécifier une clé à ssh-keygen plutôt que de démarrer l'agent, puis de charger la clé, puis d'obtenir l'empreinte digitale.

18voto

Phil Points 97

Reproduire le contenu des forums AWS ici, car je l'ai trouvé utile pour mon cas d'utilisation - je voulais vérifier les clés qui correspondaient à celles que j'avais importées dans AWS.

openssl pkey -in ~/.ssh/ec2/primary.pem -pubout -outform DER | openssl md5 -c

Où :

  • primary.pem est la clé privée à vérifier

Notez que cela donne une empreinte différente de celle calculée par ssh-keygen.

0 votes

Je pense qu'il serait important de mentionner que cela ne calcule pas la même empreinte digitale que ssh-keygen.

0 votes

N'hésitez pas à modifier la réponse.

0 votes

Merci, c'est fait. Modifiez-le si vous le souhaitez, bien sûr. Je signalerai probablement ces commentaires pour suppression après un certain temps.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X