Perdi o acesso ao meu ~/.ssh/id_dsa
arquivo (arquivo de chave privada OpenSSH no algoritmo DSA) devido ao esquecimento da senha.
Mas, originalmente, eu o importei gpg-agent
e o protegi com uma senha de agente gpg, que eu sei. E a chave privada ainda está funcionando bem gpg-agent
mesmo agora, embora agora eu deseje reconstruir o arquivo de chave privada do OpenSSH usando o que está armazenado gpg-agent
.
Usando a gpg-connect-agent
ferramenta, com a seguinte sequência de comandos, acho que sou capaz de extrair a chave privada (no formato hex / ascii), embora não saiba como reconstruí-la para o formato original do arquivo de chave privada do OpenSSH:
- Comece
gpg-connect-agent
com a--hex
opção. - No
>
prompt, obtenha o ID hexadecimal da chave usando okeyinfo --ssh-list
comando (para ser mais preciso, é o terceiro campo que fornece o ID hexadecimal da chave). - No
>
prompt, executekeywrap_key --export
. - No
>
prompt, executeexport_key <enter hex ID from step 2>
ouexport_key --openpgp <enter hex ID from step 2>
.
Agora, depois de solicitar a senha, recebê-la e confirmá-la, a gpg-connect-agent
ferramenta exibe algumas dezenas de linhas de códigos hex & ascii, que eu suspeito muito ser a minha chave privada ssh privada importada.
Em seguida, ele mostra OK
, certamente implicando que a operação foi bem-sucedida.
Supondo que o que é exibido seja realmente minha chave privada ssh (conforme "help export_key", o que foi despejado na tela é uma versão criptografada da chave aeswrap-128; provavelmente criptografada com a minha senha conhecida do agente gpg), alguma ajuda sobre como converter essas informações para o formato tradicional de chave privada ssh seria muito apreciado (um programa perl / python / shell / C para isso seria um bônus!).