J'ai un fichier PEM que j'ajoute à un agent ssh en cours d'exécution:
$ file query.pem
query.pem: PEM RSA private key
$ ssh-add ./query.pem
Identity added: ./query.pem (./query.pem)
$ ssh-add -l | grep query
2048 ef:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX ./query.pem (RSA)
Comment puis-je obtenir l'empreinte digitale de la clé (que je vois dans ssh-agent) directement à partir du fichier? Je sais que cela ssh-keygen -l -f some_key
fonctionne pour les clés ssh "normales", mais pas pour les fichiers PEM.
Si j'essaie ssh-keygen sur le fichier .pem, j'obtiens:
$ ssh-keygen -l -f ./query.pem
key_read: uudecode PRIVATE KEY----- failed
key_read: uudecode PRIVATE KEY----- failed
./query.pem is not a public key file.
Cette clé commence par:
-----BEGIN RSA PRIVATE KEY-----
MIIEp.... etc.
par opposition à une clé privée "régulière", qui ressemble à:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,E15F2.... etc.
ssh
openssl
certificate
fingerprint
Inconnu
la source
la source
.ssh/id_rsa
fichier généré par OpenSSH en utilisant toutes les valeurs par défaut EST un fichier PEM. Les clés privées sont encodées PEM par défaut. En fait, vous pouvez utiliser les clés RSA que vous générez avec OpenSSL directement avec OpenSSH.ssh-keygen -l
il était impossible de lire un fichier de clé privée, bien que d'autresssh-keygen
(etssh*
) opérations le fassent. Mais lorsqu'ilssh-keygen
génère une clé, il écrit à la fois le fichier de clé privée par exempleid_rsa
et un fichier publickey correspondant avec.pub
par exemple ajoutéid_rsa.pub
. Olderssh-keygen -l
va essayer d' ajouter.pub
au nom du fichier que vous spécifiez et la lecture de ce fichier publickey.Réponses:
Si vous souhaitez récupérer l'empreinte de votre fichier de clé publique perdu, vous pouvez le récupérer à partir du fichier de clé privée :
Ensuite, vous pouvez vérifier l'empreinte digitale publique:
Sur certains systèmes plus récents, cela imprime l'empreinte SHA256 de la clé. Vous pouvez imprimer l'empreinte digitale MD5 de la clé (le signe deux-points) en utilisant l'option
-E
:Ou en une seule ligne de commande :
la source
AWS " Vérification de l'empreinte digitale de votre paire de clés " propose deux lignes simples qui résolvent le problème, selon la façon dont votre clé a été créée.
Si vous avez créé votre paire de clés à l'aide d'AWS:
Ou, si vous avez créé votre paire de clés avec un outil tiers:
(empreintes digitales caviardées dans la sortie ci-dessus)
la source
Voici une ligne qui devrait faire ce que vous voulez sans nécessiter la création d'un fichier de clé publique localement.
Ceci utilise la chaîne bash here
<<<
afin d'avoir stdin disponible sous forme de fichier normal (/dev/stdin
) plutôt que de canal carssh-keygen
il ne fonctionnera que sur un fichier.À partir de la version 7.2 d'OpenShsh
ssh-keygen
prend en charge l'empreinte digitale à partir de l'entrée standard:Notez que cette commande rompra avec les clés privées qui utilisent une phrase secrète et n'utilisent pas d'agent. Il devrait fonctionner avec des fichiers pem générés par AWS ou OpenStack qui n'utilisent pas de mots de passe.
Voir https://stackoverflow.com/questions/2635360/ssh-keygen-accepting-stdin pour plus d'informations.
la source
-l
prend également en charge la lecture d'un fichier de clé privée (mais pas à partir de stdin).Vous n'obtenez pas l'empreinte digitale du fichier de clé privée mais du fichier de clé publique.
En fait, ssh-keygen vous l'a déjà dit:
Exécutez-le contre la moitié publique de la clé et cela devrait fonctionner.
Plus généralement
Pensez-y: la raison de l'existence de l'empreinte digitale est que vous pouvez identifier la clé publique. En fait, obtenir un hachage de la clé privée est un problème de sécurité potentiel en plus d'être inutile pour le serveur (qui n'a même pas la clé privée en question).
Une fois que vous avez la clé publique, le processus consiste à vérifier que le client a une retenue sur la moitié privée correspondante. Comme vous savez déjà quelles clés vous essayez de vérifier, vous n'avez pas besoin de l'empreinte digitale.
la source
ssh-keygen
fonctionne sur un fichier de clé privée RSA qui contient les informations supplémentaires au début (voir mon post initial), mais pas sur celui-ci. .ssh-keygen -yf
fait cela.