Perdí el acceso a mi ~/.ssh/id_dsaarchivo (archivo de clave privada OpenSSH en el algoritmo DSA), debido a que olvidé la frase de contraseña.
Pero, originalmente, lo he importado gpg-agenty lo he protegido con una frase de contraseña del agente gpg, que sí sé. Y la clave privada todavía funciona bien gpg-agentincluso ahora, aunque ahora deseo reconstruir el archivo de clave privada OpenSSH utilizando lo que está almacenado gpg-agent.
Utilizando la gpg-connect-agentherramienta, con la siguiente secuencia de comandos, creo que puedo extraer la clave privada (en formato hexadecimal / ascii), aunque no sé cómo reconstruirla al formato de archivo de clave privada OpenSSH original:
- Comience 
gpg-connect-agentcon la--hexopción. - En la 
>solicitud, obtenga la ID hexadecimal de la clave utilizando elkeyinfo --ssh-listcomando (para ser precisos, es el tercer campo que proporciona la ID hexadecimal de la clave). - En el 
>indicador, ejecutekeywrap_key --export. - En el 
>indicador, ejecuteexport_key <enter hex ID from step 2>oexport_key --openpgp <enter hex ID from step 2>. 
Ahora, después de solicitar la frase de contraseña, recibirla y confirmarla, la gpg-connect-agentherramienta muestra una docena de líneas de códigos hexadecimales y ascii, que sospecho que son mi clave privada ssh importada original.
Luego, se muestra OK, lo que seguramente implica que la operación fue exitosa.
Suponiendo que lo que se muestra es de hecho mi clave privada ssh (según "help export_key", lo que se arrojó en la pantalla es una versión cifrada de la clave aeswrap-128; muy probablemente cifrada con mi frase de contraseña conocida del agente gpg), alguna ayuda sobre cómo convertir esa información al formato de clave privada ssh tradicional sería muy apreciado (¡un programa perl / python / shell / C para hacerlo sería una ventaja!).
