Saya kehilangan akses ke ~/.ssh/id_dsafile saya (file kunci pribadi OpenSSH dalam algoritma DSA), karena lupa frasa sandi.
Tapi, awalnya, saya sudah mengimpor gpg-agentdan melindunginya dengan frasa sandi agen gpg, yang saya tahu. Dan kunci pribadi masih berfungsi dengan baik di bawah gpg-agentbahkan sekarang, meskipun sekarang saya ingin merekonstruksi file kunci pribadi OpenSSH menggunakan apa yang disimpan gpg-agent.
Menggunakan gpg-connect-agentalat, dengan urutan perintah berikut, saya pikir saya dapat mengekstrak kunci privat (dalam format hex / ascii), meskipun saya tidak tahu bagaimana merekonstruksi ke format file kunci privat OpenSSH asli:
- Mulai
gpg-connect-agentdengan--hexopsi. - Di
>prompt, dapatkan hex ID kunci menggunakankeyinfo --ssh-listperintah (tepatnya bidang ketiga yang memberikan hex ID kunci). - Di
>prompt, jalankankeywrap_key --export. - Di
>prompt, jalankanexport_key <enter hex ID from step 2>atauexport_key --openpgp <enter hex ID from step 2>.
Sekarang, setelah meminta frasa sandi, menerimanya dan mengkonfirmasinya, gpg-connect-agentalat menampilkan beberapa lusin baris kode hex & ascii, yang saya sangat curigai sebagai kunci pribadi ssh asli yang diimpor.
Kemudian, itu ditampilkan OK, pasti menyiratkan operasi itu berhasil.
Dengan asumsi apa yang ditampilkan memang kunci pribadi ssh saya (sesuai "help export_key", apa yang dibuang di layar adalah aeswrap-128 versi terenkripsi kunci; kemungkinan besar dienkripsi dengan frasa sandi agen gpg saya yang dikenal), beberapa bantuan tentang cara untuk mengkonversi info itu ke dalam format kunci privat ssh tradisional akan sangat dihargai (program perl / python / shell / C untuk melakukannya akan menjadi bonus!).