Gizli gpg anahtarını nasıl içe aktarır (bir makineden diğerine kopyalanır)?


153

GPG anahtarımı bir makineden diğerine kopyalamaya çalışıyorum.

Yaparım:

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

Dosyaları yeni makineye taşıyın ve sonra:

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]

Hepsi bana iyi geldi, ama sonra:

$ 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

Bu nedenle hata mesajı, dosyanın gizli anahtar içe aktarmanın içe aktardığını belirttiği görünen [SUB-ID] ile şifrelenmiş olduğunu söylüyor. (Her iki mesajdaki [SUB-ID] aynıdır).

Yani açıkça yanlış bir şey yapıyorum, ama ne olduğunu bilmiyorum.

Yanıtlar:


164

--importÖzel anahtarı almak için komut satırına eklemeniz gerekir . --allow-secret-key-importBayrağı kullanmanıza gerek yok . Man sayfasına göre: "Bu eski bir seçenek ve hiçbir yerde kullanılmıyor."

gpg --import private.key

Ayrıca gpg2 -e -r [ID], "Bu anahtarın adlandırılmış kullanıcıya ait olduğuna dair hiçbir güvence yok" dediğini bilme ihtimaliniz var mı? Keşke orijinal soruya dahil etseydim, ama daha sonra farkettim.
user50849

1
GnuPG, hangi anahtarlara ne kadar güvenileceğine karar vermek için kullandığı bir güven veritabanı tutar. Örneğin, en çok kendi anahtarlarınıza, doğrudan veya dolaylı olarak herhangi bir güvenilir anahtar tarafından imzalanmayan anahtarlara güvenebilirsiniz. Sadece boş bir veritabanına içe aktardıktan sonra, muhtemelen hiçbir anahtara güvenilmez. Bu güven veritabanı, veritabanından veya anahtarlarından ayrıdır; bu nedenle, anahtarların içe aktarılması, zaten güvenilen bir anahtar tarafından imzalanmadıkça, bunların güvenilmemesini sağlar. Hangi tuşlara ayrı ayrı güvenmek istediğinizi GnuPG ile işaretlemelisiniz.
Celada

3
@Celeda, teşekkürler, --edit-key ve trust komutu ile anahtarı güvenilir bulmayı başardım. Asıl sorum, anahtarı bir makineden diğerine nasıl kopyalayacağımızdan, cevabınıza bununla ilgili bir şeyler eklemenin uygun olacağını düşünüyorum. Cevabınızı kendim düzenlememeyi tercih ederim ve bu konuda benden çok şey biliyorsunuz.
user50849

Cevabımda bu konuda konuşacak kadar güvenilir olanı iyi anladığımı sanmıyorum. Benim yorumumda verdiğim belirsiz ipuçlarını kullanarak çözebildiğine sevindim.
Celada

Tamam, orijinal soruyu yeniden adlandırdım, bu yüzden cevaba daha özel bir şekilde uyuyor. Bu şekilde trustdb'ye ayrı bir soru sorabilirim. Yardım için teşekkürler. :)
user50849

81

Yukarıdaki sadece kısmi bir cevaptır. Tam cevap:

gpg --import private.key
  • KEYID (örn. FA0339620046E260) Çıktıdan verilir:

    gpg --edit-key {KEY} trust quit
    # enter 5<RETURN>
    # enter y<RETURN>
    
  • VEYA aşağıdaki otomatik komutu kullanın:

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

Son olarak, şu an yerine anahtarın güvenilir olduğunu doğrulayın[ultimate] .[unknown]

gpg --list-keys

6
Bu kabul edilen cevap olmalı. Çok daha eksiksiz.
Ben Lindsay,

Bu ekstra komutlar ne yapar?
steinybot

@Steiny Bu anahtarı [bilinmeyen] yerine [ultimate] ile güvenilir yapar. gpgtools.tenderapp.com/kb/faq/…
cmcginty 24:18

0

Eski bir gpg versiyonu olan bir yedekten aktarıyordum. Eski bilgisayar mevcut olmadığından, yalnızca yedeklemeyi yaptığım için önce veremedim. Bu benim için çalıştı.

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

Şifreyi hemen girmeden gizli anahtarları içeri aktarabilmek istiyorsanız bu --batchseçeneği kullanın.

Genel anahtarları doğrulamak için:

gpg --list-keys

Gizli anahtarları doğrulamak için:

gpg --list-secret-keys
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.