Wie importiere ich einen geheimen GPG-Schlüssel (von einem Computer auf einen anderen kopiert)?

153

Ich versuche, meinen GPG-Schlüssel von einem Computer auf einen anderen zu kopieren.

Ich mache:

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

Verschieben von Dateien auf einen neuen Computer und dann:

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]

Alles sieht für mich gut aus, aber dann:

$ 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

Die Fehlermeldung besagt also, dass die Datei mit [SUB-ID] verschlüsselt wurde. Der geheime Schlüsselimport scheint zu sagen, dass sie importiert wurde. (Die [SUB-ID] in beiden Nachrichten ist dieselbe).

Also mache ich offensichtlich etwas falsch, aber ich weiß nicht was.

user50849
quelle

Antworten:

164

Sie müssen --importder Befehlszeile hinzufügen , um den privaten Schlüssel zu importieren. Sie müssen die --allow-secret-key-importFlagge nicht verwenden . Laut Manpage: "Dies ist eine veraltete Option und wird nirgendwo verwendet."

gpg --import private.key
Celada
quelle
Besteht die Möglichkeit, dass Sie auch wissen, warum gpg2 -e -r [ID]"Es gibt keine Gewissheit, dass dieser Schlüssel dem angegebenen Benutzer gehört"? Ich wünschte, ich hätte es in die ursprüngliche Frage aufgenommen, aber ich bemerkte es erst später.
user50849
1
GnuPG unterhält eine Vertrauensdatenbank, in der festgelegt wird, wie sehr welchen Schlüsseln vertraut wird. Vertrauen Sie beispielsweise Ihren eigenen Schlüsseln am meisten, Schlüsseln, die nicht direkt oder indirekt von vertrauenswürdigen Schlüsseln signiert sind, am wenigsten. Nachdem Sie gerade in eine leere Datenbank importiert haben, werden wahrscheinlich überhaupt keine Schlüssel mehr als vertrauenswürdig eingestuft. Diese Vertrauensdatenbank ist nicht mit der Datenbank oder den Schlüsseln selbst identisch. Durch den Import von Schlüsseln werden diese nicht als vertrauenswürdig eingestuft, es sei denn, sie sind von einem bereits vertrauenswürdigen Schlüssel signiert. Sie müssen GnuPG angeben, welchen Schlüsseln Sie separat vertrauen möchten.
Celada,
3
@Celeda, danke, mit --edit-key und und dem Befehl trust habe ich es geschafft, den Schlüssel als vertrauenswürdig zu kennzeichnen. Da meine ursprüngliche Frage lautete, wie der Schlüssel von einem Computer auf einen anderen kopiert werden soll, erscheint es mir angebracht, Ihrer Antwort etwas dazu hinzuzufügen. Ich würde es vorziehen, Ihre Antwort nicht selbst zu bearbeiten, und Sie scheinen viel mehr darüber zu wissen als ich.
user50849
Ich habe nicht das Gefühl, dass ich die Vertrauensbasis gut genug verstehe, um in meiner Antwort darüber zu sprechen. Ich bin froh, dass du es mit den vagen Hinweisen, die ich in meinem Kommentar gegeben habe, herausfinden konntest.
Celada
Ok, ich habe die ursprüngliche Frage umbenannt, damit sie genauer zur Antwort passt. Auf diese Weise kann ich der Trustdb eine separate Frage stellen. Danke für die Hilfe. :)
user50849
81

Oben ist nur eine teilweise Antwort. Die vollständige Antwort lautet:

gpg --import private.key
  • Gegeben die KEYID (zB FA0339620046E260) aus der Ausgabe:

    gpg --edit-key {KEY} trust quit
    # enter 5<RETURN>
    # enter y<RETURN>
    
  • ODER verwenden Sie den folgenden automatisierten Befehl:

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

Schließlich überprüfen diesen Schlüssel wird nun mit vertrauenswürdigen [ultimate]statt[unknown]

gpg --list-keys
cmcginty
quelle
6
Dies sollte die akzeptierte Antwort sein. Viel vollständiger.
Ben Lindsay
Was bewirken diese zusätzlichen Befehle?
Steinybot
@Steiny Damit wird der Schlüssel mit [ultimativ] anstelle von [unbekannt] als vertrauenswürdig eingestuft. gpgtools.tenderapp.com/kb/faq/…
cmcginty
0

Ich habe von einem Backup importiert, das eine alte Version von gpg hatte. Da der alte Computer nicht verfügbar war, nur das Backup, konnte ich es nicht zuerst exportieren. Das hat bei mir funktioniert.

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

Wenn Sie geheime Schlüssel importieren möchten, ohne die Passphrase sofort einzugeben, verwenden Sie die --batchOption.

So überprüfen Sie die öffentlichen Schlüssel:

gpg --list-keys

So überprüfen Sie die geheimen Schlüssel:

gpg --list-secret-keys
Jonathan Tran
quelle