Bagaimana cara mengimpor kunci gpg rahasia (disalin dari satu mesin ke mesin lain)?

153

Saya mencoba menyalin kunci gpg dari satu mesin ke mesin lain.

Saya lakukan:

gpg --export ${ID} > public.key
gpg --export-secret-key ${ID} > private.key

Pindahkan file ke mesin baru, dan kemudian:

gpg --import public.key
gpg: nyckel [ID]: public key [Name, e-mail] was imported
gpg: Total number of treated keys: 1
gpg:                 imported: 1  (RSA: 1)

gpg --allow-secret-key-import private.key
sec  [?]/[ID] [Creation date] [Name, e-mail]
ssb  [?]/[SUB-ID] [Creation date]

Semua terlihat bagus untuk saya, tetapi kemudian:

$ gpg -d [file].gpg
gpg: encrypted with 4096-bit RSA-key, id [SUB-ID], created [Creation date]
  [Name, e-mail]
gpg: decryption failed: secret key not accessible

Jadi pesan kesalahan mengatakan bahwa file tersebut telah dienkripsi dengan [SUB-ID], yang tampaknya impor kunci rahasia mengatakan telah diimpor. ([SUB-ID] di kedua pesan itu sama).

Jadi saya jelas melakukan sesuatu yang salah, tetapi saya tidak tahu apa.

pengguna50849
sumber

Jawaban:

164

Anda perlu menambahkan --importke baris perintah untuk mengimpor kunci pribadi. Anda tidak perlu menggunakan --allow-secret-key-importbendera. Menurut halaman manual: "Ini adalah opsi yang usang dan tidak digunakan di mana pun."

gpg --import private.key
Celada
sumber
Setiap kesempatan Anda juga akan tahu mengapa gpg2 -e -r [ID]mengatakan "Tidak ada jaminan kunci ini milik pengguna yang disebutkan"? Saya berharap saya memasukkannya dalam pertanyaan awal, tetapi saya baru menyadarinya nanti.
user50849
1
GnuPG mengelola basis data kepercayaan yang digunakannya untuk memutuskan seberapa banyak mempercayai kunci apa. Misalnya, paling percaya kunci Anda sendiri, kunci yang tidak secara langsung atau tidak langsung ditandatangani oleh kunci tepercaya. Setelah Anda baru saja mengimpor ke database kosong, mungkin tidak ada kunci yang dipercaya. Basis data trust ini terpisah dari basis data atau kunci itu sendiri, jadi mengimpor kunci tidak membuatnya dipercaya kecuali ditandatangani oleh beberapa kunci yang sudah tepercaya. Anda harus memberi GnuPG kunci mana yang ingin Anda percayai secara terpisah.
Celada
3
@Celeda, terima kasih, dengan --edit-key dan dan perintah trust saya berhasil membuat kunci dipercaya. Karena pertanyaan awal saya adalah bagaimana cara menyalin kunci dari satu mesin ke mesin lain, saya pikir akan lebih tepat untuk menambahkan sesuatu tentang itu ke jawaban Anda. Saya lebih suka untuk tidak mengedit jawaban Anda sendiri, dan Anda tampaknya tahu lebih banyak daripada saya tentang ini.
user50849
Saya tidak merasa bahwa saya memahami trustdb cukup baik untuk membicarakannya dalam jawaban saya. Saya senang Anda bisa mengatasinya menggunakan petunjuk samar yang saya berikan dalam komentar saya.
Celada
Ok, saya sudah memberi judul ulang pertanyaan aslinya sehingga lebih spesifik sesuai dengan jawabannya. Dengan begitu saya bisa mengajukan pertanyaan terpisah pada trustdb. Terima kasih untuk bantuannya. :)
user50849
81

Di atas hanya sebagian jawaban. Jawaban lengkapnya adalah:

gpg --import private.key
  • Diberikan KEYID (misalnya FA0339620046E260) dari output:

    gpg --edit-key {KEY} trust quit
    # enter 5<RETURN>
    # enter y<RETURN>
    
  • ATAU gunakan perintah otomatis di bawah ini:

    expect -c "spawn gpg --edit-key {KEY} trust quit; send \"5\ry\r\"; expect eof"
    

Akhirnya, verifikasi bahwa kunci sekarang dipercaya dengan [ultimate]alih - alih[unknown]

gpg --list-keys
cmcginty
sumber
6
Ini harus menjadi jawaban yang diterima. Jauh lebih lengkap.
Ben Lindsay
Apa yang dilakukan perintah tambahan ini?
steinybot
@Steiny Itu membuat kunci dipercaya dengan [akhir] bukan [tidak diketahui]. gpgtools.tenderapp.com/kb/faq/…
cmcginty
0

Saya mengimpor dari cadangan yang memiliki versi gpg lama. Karena komputer lama tidak tersedia, hanya cadangan, saya tidak bisa mengekspornya terlebih dahulu. Inilah yang bekerja untuk saya.

gpg --import old_home_dir/.gnupg/pubring.gpg
gpg --import old_home_dir/.gnupg/secring.gpg

Jika Anda ingin dapat mengimpor kunci rahasia tanpa langsung memasukkan frasa sandi, gunakan --batchopsi.

Untuk memverifikasi kunci publik:

gpg --list-keys

Untuk memverifikasi kunci rahasia:

gpg --list-secret-keys
Jonathan Tran
sumber