J'ai perdu l'accès à mon ~/.ssh/id_dsa
fichier (fichier de clé privée OpenSSH dans l'algorithme DSA), en raison de l'oubli de la phrase secrète.
Mais, à l'origine, je l'ai importé gpg-agent
et protégé avec une phrase secrète d'agent gpg, que je connais. Et la clé privée fonctionne toujours bien sous gpg-agent
même maintenant, bien que je souhaite maintenant reconstruire le fichier de clé privée OpenSSH en utilisant ce qui est stocké gpg-agent
.
En utilisant l' gpg-connect-agent
outil, avec la séquence de commandes suivante, je pense pouvoir extraire la clé privée (au format hex / ascii), bien que je ne sache pas comment la reconstruire au format de fichier de clé privée OpenSSH d'origine:
- Commencez
gpg-connect-agent
avec l'--hex
option. - Dans l'
>
invite, obtenez l'ID hexadécimal de la clé à l'aide de lakeyinfo --ssh-list
commande (pour être précis, c'est le troisième champ qui donne l'ID hexadécimal de la clé). - À l'
>
invite, exécutezkeywrap_key --export
. - À l'
>
invite, exécutezexport_key <enter hex ID from step 2>
ouexport_key --openpgp <enter hex ID from step 2>
.
Maintenant, après avoir demandé la phrase de passe, l'avoir reçue et confirmée, l' gpg-connect-agent
outil affiche quelques dizaines de lignes de codes hexadécimaux et ascii, que je soupçonne fortement d'être ma clé privée ssh importée d'origine.
Ensuite, il s'affiche OK
, ce qui implique sûrement que l'opération a réussi.
En supposant que ce qu'elle affiche est bien ma clé privée ssh (selon "help export_key", ce qui a été vidé sur l'écran est une version cryptée aeswrap-128 de la clé; très probablement cryptée avec ma phrase secrète gpg-agent connue), un peu d'aide sur la façon dont convertir ces informations au format traditionnel de clé privée ssh serait très apprécié (un programme perl / python / shell / C pour le faire serait un bonus!).