Je dois effectuer l'audit de la clé SSH pour GitHub, mais je ne sais pas comment trouver mon empreinte de clé RSA. À l’origine, j’avais suivi un guide pour effectuer la configuration sur une boîte Ubuntu 10.04 (Lucid Lynx) hébergée par Linode .
Quelle commande dois-je entrer pour rechercher mon empreinte digitale de clé RSA actuelle si je suis connecté à distance à l'aide de PuTTY?
Exécutez la commande suivante pour récupérer l'empreinte de votre clé SSH (-l
signifie "liste" au lieu de créer une nouvelle clé, -f
signifie "nom du fichier"):
$ ssh-keygen -lf /path/to/ssh/key
Ainsi, par exemple, sur ma machine, la commande que j'ai exécutée était (à l'aide de 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)
Avec les nouvelles versions de ssh-keygen, exécutez ssh-keygen -E md5 -lf <fileName>
si vous voulez le même format que l'ancien (merci, Lloyd Dewolf).
Informations sur le bonus:
ssh-keygen -lf
fonctionne également sur les fichiers known_hosts
et authorized_keys
.
Trouvez le plus de public sur un système Linux/Unix/OS X avec find /etc/ssh /home/*/.ssh /Users/*/.ssh -name '*.pub' -o -name 'authorized_keys' -o -name 'known_hosts'
(si vous voulez voir à l'intérieur des répertoires des autres utilisateurs, vous devez être root ou Sudo.)
Le ssh-add -l
est très similaire, mais répertorie les empreintes digitales des clés ajoutées à votre agent. (Les utilisateurs d’OS X notent que le SSH sans mot de passe magique via Keychain n’est pas la même chose que l’utilisation de ssh-agent.)
Les nouvelles commandes SSH répertorieront les empreintes sous la forme d'une cléSHA256.
Par exemple:
ssh-keygen -lf ~/.ssh/id_dsa.pub
1024 SHA256:19n6fkdz0qqmowiBy6XEaA87EuG/jgWUr44ZSBhJl6Y (DSA)
Si vous devez le comparer à une ancienne empreinte digitale, vous devez également spécifier d’utiliser la fonction de hachageMD5fingerprint.
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 doivent plus être utilisées, mais l'ancienne clé RSA ou les nouvelles clés écliptiques.
Pour ces "administrateurs" qui continuent à éditer la commande que j'ai utilisée ci-dessus. ARRÊTEZ DE LE CHANGER! Vous faites la commande et la sortie résultante ne correspond pas!
Pour voir votre clé sur Ubuntu, entrez simplement la commande suivante sur votre terminal:
ssh-add -l
Vous obtiendrez une sortie comme celle-ci: 2568 0j:20:4b:88:a7:9t:wd:19:f0:d4:4y:9g:27:cf:97:23
yourName @ ubuntu (RSA)
Si toutefois vous obtenez une erreur comme; Could not open a connection to your authentication agent.
Ensuite, cela signifie que ssh-agent n'est pas en cours d'exécution. Vous pouvez le démarrer/le lancer avec: ssh-agent bash
(merci à @Richard dans les commentaires) puis relancez ssh-add -l
Une paire de clés (clés privée et publique) aura la même empreinte digitale. Ainsi, si vous ne savez pas quelle clé privée appartient à quelle clé publique, trouvez la correspondance en comparant leurs empreintes digitales.
La réponse la plus votée de Marvin Vinto fournit l'empreinte d'un fichier de clé public SSH. L'empreinte de la clé privée SSH correspondante peut également être interrogée, mais elle nécessite une série d'étapes plus longue, comme illustré ci-dessous.
Chargez l'agent SSH, si vous ne l'avez pas déjà fait. Le plus simple est d’invoquer
$ ssh-agent bash
ou
$ ssh-agent tcsh
(ou un autre shell que vous utilisez).
Chargez la clé privée que vous souhaitez tester:
$ ssh-add /path/to/your-ssh-private-key
Il vous sera demandé de saisir la phrase secrète si la clé est protégée par un mot de passe.
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 que vous recherchez. S'il y a plusieurs clés, plusieurs lignes seront imprimées et la dernière ligne contient l'empreinte de la dernière clé chargée.
Si vous souhaitez arrêter l'agent (c'est-à-dire, si vous avez appelé l'étape 1 ci-dessus), tapez simplement "exit" sur le shell et vous serez de retour sur le shell avant le chargement de l'agent ssh.
Je n’ajoute pas de nouvelles informations, mais j'espère que cette réponse sera claire pour les utilisateurs de tous les niveaux.
Le moyen le plus rapide si vos clés sont dans un agent SSH:
$ ssh-add -L | ssh-keygen -E md5 -lf /dev/stdin
Chaque clé de l'agent sera imprimée comme suit:
4096 MD5:8f:c9:dc:40:ec:9e:dc:65:74:f7:20:c1:29:d1:e8:5a /Users/cmcginty/.ssh/id_rsa (RSA)
Reproduction de contenu à partir de AWS forums ici, car je l’ai trouvé utile pour mon cas d’utilisation - Je souhaitais vérifier quelles clés correspondent à 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
$ ssh-add -l
fonctionnera également sous Mac OS X v10.8 (Mountain Lion) - v10.10 (Yosemite).
Il prend également en charge l'option -E
pour spécifier le format de l'empreinte digitale. Par conséquent, si MD5 est nécessaire (il est souvent utilisé, par exemple par GitHub), ajoutez simplement -E md5
à la commande.
C’est la fonction Shell que j’utilise pour obtenir l’empreinte de ma clé SSH lors de la création de DigitalOcean gouttelettes:
fingerprint() {
pubkeypath="$1"
ssh-keygen -E md5 -lf "$pubkeypath" | awk '{ print $2 }' | cut -c 5-
}
Mettez-le dans votre ~/.bashrc
, sourcez-le, et vous pourrez alors obtenir l'empreinte digitale comme ceci:
$ fingerprint ~/.ssh/id_rsa.pub
d2:47:0a:87:30:a0:c0:df:6b:42:19:55:b4:f3:09:b9
Sous Windows, si vous exécutez PuTTY / Pageant, l’empreinte est répertoriée lorsque vous chargez la clé PuTTY (.ppk) dans Pageant. C'est très utile si vous oubliez lequel vous utilisez.
Si votre agent SSH est en cours d'exécution, il est
ssh-add -l
pour répertorier les empreintes RSA de toutes les identités, ou -L
pour répertorier les clés publiques.
Si votre agent n'est pas en cours d'exécution, essayez:
ssh-agent sh -c 'ssh-add; ssh-add -l'
Et pour vos clés publiques:
ssh-agent sh -c 'ssh-add; ssh-add -L'
Si vous obtenez le message: ' L'agent n'a aucune identité. ', vous devez d'abord générer votre clé RSA par ssh-keygen
.
Sur Fedora, je [localise ~/.ssh] qui me dit que les clés sont @
/root/.ssh
/root/.ssh/authorized_keys
Parfois, vous pouvez avoir un tas de clés dans votre répertoire ~/.ssh
sans savoir laquelle correspond à l’empreinte digitale affichée par GitHub/Gitlab/etc.
Voici comment afficher les noms de fichiers de clés et les empreintes MD5 de toutes les clés de votre répertoire ~/.ssh
:
cd ~/.ssh
find . -type f -exec printf "\n{}\n" \; -exec ssh-keygen -E md5 -lf {} \;
(Pour connaître la signification des paramètres, reportez-vous à cette réponse à propos de la commande find
.
Notez que les fichiers privés/publics qui appartiennent à une clé ont la même empreinte digitale. Vous verrez donc des doublons.
Pour vérifier un serveur SSH distant avant la première connexion, vous pouvez consulter www.server-stats.net/ssh/ pour voir toutes les clés SHH du serveur, ainsi que dès que la clé est connue. .
Cela ne ressemble pas à un certificat SSL, mais constitue un must avant toute connexion à un serveur SSH pour la première fois.
Google Compute Engine affiche l'empreinte digitale de la clé d'hôte SSH dans la sortie série d'une instance Linux. L'API peut obtenir ces données auprès de GCE et il n'est pas nécessaire de se connecter à l'instance.
Je ne l'ai trouvé nulle part ailleurs que depuis la sortie série. Je pense que les empreintes digitales devraient se trouver dans un endroit plus convivial pour les programmeurs.
Cependant, il semble que cela dépend du type d'instance. J'utilise des instances de Debian 7 (Wheezy) f1-micro.