~/.ssh/id_dsa
由于忘记了密码,我无法访问我的文件(DSA算法中的OpenSSH私钥文件)。
但是,最初,我已经将它导入gpg-agent
gpg-agent密码并用gpg-agent密码保护了,我确实知道。而且gpg-agent
即使现在我仍然希望使用存储在中的内容重建OpenSSH私钥文件,私钥仍然可以正常工作gpg-agent
。
使用gpg-connect-agent
工具,通过以下命令序列,尽管我不知道如何将其重构为原始的OpenSSH私钥文件格式,但我认为它能够提取私钥(十六进制/ ascii格式):
- 开始
gpg-connect-agent
与--hex
选项。 - 在
>
提示符下,使用keyinfo --ssh-list
命令获取密钥的十六进制ID (确切地说,这是提供密钥十六进制ID的第三个字段)。 - 在
>
提示符下,执行keywrap_key --export
。 - 在
>
提示符下,执行export_key <enter hex ID from step 2>
或export_key --openpgp <enter hex ID from step 2>
。
现在,在提示输入密码短语,接收并确认密码之后,该gpg-connect-agent
工具将显示几十行十六进制和ASCII码,我高度怀疑这是我最初导入的ssh私钥。
然后,它显示OK
,肯定表示操作成功。
假设显示的确实是我的ssh私钥(按照“ help export_key”,转储到屏幕上的是密钥的aeswrap-128加密版本;很可能是用我已知的gpg-agent密码加密的),有关如何使用将信息转换为传统的ssh私钥格式将不胜感激(使用perl / python / shell / C程序将是一个加分项!)。