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

153

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 ensuite:

$ 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

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

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

utilisateur50849
la source

Réponses:

164

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-importdrapeau. Selon la page de manuel: "Ceci est une option obsolète et n’est utilisée nulle part."

gpg --import private.key
Celada
la source
Vous savez également pourquoi gpg2 -e -r [ID]"on ne peut pas garantir que cette clé appartient à l'utilisateur nommé"? J'aurais aimé l'inclure dans la question initiale, mais je ne l'ai remarqué que plus tard.
user50849
1
GnuPG maintient une base de données de confiance qu’il utilise pour décider du niveau de confiance à quelles clés. Par exemple, faites le plus confiance à vos propres clés, celles qui ne sont pas signées directement ou indirectement par une clé approuvée. Une fois que vous venez d'importer dans une base de données vide, aucune clé n'est probablement sécurisée. Cette base de données de confiance étant séparée de la base de données ou des clés elles-mêmes, l'importation de clés ne les rend pas fiables à moins qu'elles ne soient signées par une clé déjà approuvée. Vous devez indiquer à GnuPG les clés auxquelles vous voulez faire confiance séparément.
Celada
3
@ Celeda, merci, avec --edit-key et la commande de confiance, j'ai réussi à obtenir la clé de confiance. Puisque ma question initiale était de savoir comment copier la clé d’une machine à une autre, je pense qu’il serait approprié d’ajouter quelque chose à ce sujet à votre réponse. Je préférerais ne pas modifier votre réponse moi-même et vous semblez en savoir beaucoup plus que moi à ce sujet.
user50849
Je ne pense pas que je comprends assez confiance à trustdb pour en parler dans ma réponse. Je suis heureux que vous ayez réussi à résoudre le problème en utilisant les vagues indications que j'ai données dans mon commentaire.
Celada
Ok, j'ai retitré la question initiale pour qu'elle corresponde plus précisément à la réponse. De cette façon, je peux poser une question distincte à trustdb. Merci pour l'aide. :)
utilisateur50849
81

Ce qui précède 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>
    # enter y<RETURN>
    
  • 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 maintenant approuvée au [ultimate]lieu de[unknown]

gpg --list-keys
cmcginty
la source
6
Cela devrait être la réponse acceptée. Beaucoup plus complet.
Ben Lindsay
Que font ces commandes supplémentaires?
steinybot
@Steiny La clé est approuvée avec [ultime] au lieu de [inconnu]. gpgtools.tenderapp.com/kb/faq/…
cmcginty
0

J'importais depuis une sauvegarde qui possédait une ancienne version de gpg. Comme l'ancien ordinateur n'était pas disponible, uniquement 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 l' --batchoption.

Pour vérifier les clés publiques:

gpg --list-keys

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

gpg --list-secret-keys
Jonathan Tran
la source