Saya kehilangan akses ke ~/.ssh/id_dsa
file saya (file kunci pribadi OpenSSH dalam algoritma DSA), karena lupa frasa sandi.
Tapi, awalnya, saya sudah mengimpor gpg-agent
dan melindunginya dengan frasa sandi agen gpg, yang saya tahu. Dan kunci pribadi masih berfungsi dengan baik di bawah gpg-agent
bahkan sekarang, meskipun sekarang saya ingin merekonstruksi file kunci pribadi OpenSSH menggunakan apa yang disimpan gpg-agent
.
Menggunakan gpg-connect-agent
alat, 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-agent
dengan--hex
opsi. - Di
>
prompt, dapatkan hex ID kunci menggunakankeyinfo --ssh-list
perintah (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-agent
alat 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!).