¿Cómo importar una clave secreta gpg (copiada de una máquina a otra)?

153

Estoy tratando de copiar mi clave gpg de una máquina a otra.

Hago:

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

Mueva los archivos a la nueva máquina y luego:

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]

Todo me parece bien, pero luego:

$ 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

Entonces, el mensaje de error dice que el archivo ha sido encriptado con [SUB-ID], que la importación de clave secreta parece decir que ha importado. (La [SUB-ID] en ambos mensajes es la misma).

Claramente, estoy haciendo algo mal, pero no sé qué.

usuario50849
fuente

Respuestas:

164

Debe agregar --importa la línea de comandos para importar la clave privada. No necesitas usar la --allow-secret-key-importbandera. Según la página del manual: "Esta es una opción obsoleta y no se usa en ningún lado".

gpg --import private.key
Celada
fuente
¿ gpg2 -e -r [ID]Hay alguna posibilidad de que también sepa por qué dice "No hay seguridad de que esta clave pertenezca al usuario nombrado"? Desearía haberlo incluido en la pregunta original, pero lo noté solo más tarde.
user50849
1
GnuPG mantiene una base de datos de confianza que utiliza para decidir cuánto confiar en qué claves. Por ejemplo, confíe más en sus propias claves, claves que no estén firmadas directa o indirectamente por ninguna clave confiable. Después de haber importado a una base de datos vacía, probablemente no se confíe en ninguna clave. Esta base de datos de confianza es independiente de la base de datos o de las claves mismas, por lo que importar claves no las hace confiables a menos que estén firmadas por alguna clave que ya sea confiable. Tienes que robar GnuPG en qué claves quieres confiar por separado.
Celada
3
@Celeda, gracias, con --edit-key y y el comando de confianza logré que la clave sea confiable. Como mi pregunta original era cómo copiar la clave de una máquina a otra, creo que sería apropiado agregar algo al respecto a su respuesta. Prefiero no editar tu respuesta yo mismo, y parece que sabes mucho más que yo sobre esto.
user50849
No siento que entiendo el trustdb lo suficientemente bien como para hablar de ello en mi respuesta. Me alegra que hayas podido resolverlo usando los vagos consejos que di en mi comentario.
Celada
Ok, volví a titular la pregunta original para que se ajuste más específicamente a la respuesta. De esa manera puedo hacer una pregunta por separado en el trustdb. Gracias por la ayuda. :)
user50849
81

Lo anterior es solo una respuesta parcial. La respuesta completa es:

gpg --import private.key
  • Dado el KEYID (p FA0339620046E260. Ej. ) De la salida:

    gpg --edit-key {KEY} trust quit
    # enter 5<RETURN>
    # enter y<RETURN>
    
  • O use el comando automatizado a continuación:

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

Finalmente, verifique que la clave ahora sea confiable en [ultimate]lugar de[unknown]

gpg --list-keys
cmcginty
fuente
66
Esta debería ser la respuesta aceptada. Mucho más completo.
Ben Lindsay
¿Qué hacen estos comandos adicionales?
steinybot
@Steiny Hace que la clave sea confiable con [ultimate] en lugar de [unknown]. gpgtools.tenderapp.com/kb/faq/…
cmcginty
0

Estaba importando desde una copia de seguridad que tenía una versión antigua de gpg. Como la computadora anterior no estaba disponible, solo la copia de seguridad, no pude exportarla primero. Esto es lo que funcionó para mí.

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

Si desea poder importar claves secretas sin ingresar la frase de contraseña inmediatamente, use la --batchopción

Para verificar las claves públicas:

gpg --list-keys

Para verificar las claves secretas:

gpg --list-secret-keys
Jonathan Tran
fuente