J'ai perdu l'accès à mon ~/.ssh/id_dsafichier (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-agentet protégé avec une phrase secrète d'agent gpg, que je connais. Et la clé privée fonctionne toujours bien sous gpg-agentmê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-agentoutil, 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-agentavec l'--hexoption. - Dans l'
>invite, obtenez l'ID hexadécimal de la clé à l'aide de lakeyinfo --ssh-listcommande (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-agentoutil 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!).