web-dev-qa-db-fra.com

Comment importer une clé gpg secrète (copiée d'une machine à une autre)?

J'essaie de copier ma clé gpg d'une machine à une autre.

Je fais:

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

Déplacez les fichiers vers une nouvelle machine, puis:

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]

Tout me semble bien, mais alors:

$ 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

Ainsi, le message d'erreur indique que le fichier a été chiffré avec [SUB-ID], que l'importation de clé secrète semble indiquer qu'il a importé. (Le [SUB-ID] dans les deux messages est le même).

Je fais donc clairement quelque chose de mal, mais je ne sais pas quoi.

173
user50849

Vous devez ajouter --import à la ligne de commande pour importer la clé privée. Vous n'avez pas besoin d'utiliser le --allow-secret-key-import drapeau. Selon la page de manuel: "Il s'agit d'une option obsolète qui n'est utilisée nulle part."

gpg --import private.key
186
Celada

Ci-dessus n'est qu'une réponse partielle. La réponse complète est:

gpg --import private.key
  • Étant donné le KEYID (par exemple FA0339620046E260) de la sortie:

    gpg --edit-key {KEY} trust quit
    # enter 5<RETURN> (I trust ultimately)
    # enter y<RETURN> (Really set this key to ultimate trust - Yes)
    
  • OU utilisez la commande automatisée ci-dessous:

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

Enfin, vérifiez que la clé est désormais approuvée avec [ultimate] au lieu de [unknown]

gpg --list-keys
94
cmcginty

J'importais depuis une sauvegarde qui avait une ancienne version de gpg. Étant donné que l'ancien ordinateur n'était pas disponible, seule la sauvegarde, je ne pouvais pas l'exporter d'abord. C'est ce qui a fonctionné pour moi.

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

Si vous souhaitez pouvoir importer des clés secrètes sans saisir immédiatement la phrase secrète, utilisez le --batch option.

Pour vérifier les clés publiques:

gpg --list-keys

Pour vérifier les clés secrètes:

gpg --list-secret-keys
0
Jonathan Tran