Я потерял доступ к своему ~/.ssh/id_dsa
файлу (файл закрытого ключа OpenSSH в алгоритме DSA) из-за того, что забыл пароль.
Но изначально я импортировал его gpg-agent
и защитил парольной фразой gpg-agent, которую я знаю. И закрытый ключ все еще работает нормально gpg-agent
даже сейчас, хотя теперь я хочу восстановить файл закрытого ключа OpenSSH, используя то, что хранится в gpg-agent
.
Используя gpg-connect-agent
инструмент со следующей последовательностью команд, я думаю, что могу извлечь закрытый ключ (в формате hex / ascii), хотя я не знаю, как восстановить его в исходный формат файла закрытого ключа OpenSSH:
- Начните
gpg-connect-agent
с--hex
варианта. - В командной
>
строке получите шестнадцатеричный идентификатор ключа, используяkeyinfo --ssh-list
команду (если быть точным, это третье поле, которое дает шестнадцатеричный идентификатор ключа). - В
>
командной строке выполнитеkeywrap_key --export
. - В
>
командной строке выполнитеexport_key <enter hex ID from step 2>
илиexport_key --openpgp <enter hex ID from step 2>
.
Теперь, после запроса пароля, его получения и подтверждения, gpg-connect-agent
инструмент отображает несколько десятков строк шестнадцатеричных и шестнадцатеричных кодов, которые, как я подозреваю, является моим оригинальным импортированным закрытым ключом ssh.
Затем он отображает OK
, безусловно, подразумевая, что операция прошла успешно.
Если предположить, что это действительно мой закрытый ключ ssh (согласно «help export_key», то, что было выведено на экран, является зашифрованной версией ключа aeswrap-128; скорее всего, зашифровано с помощью моей известной парольной фразы gpg-agent), некоторая помощь в том, как было бы очень полезно преобразовать эту информацию в традиционный формат закрытого ключа ssh (для этого была бы полезна программа на perl / python / shell / C)!