¿Cómo usar GnuPG con --passphrase?

11

Quiero escribir un script que ejecute gpgun archivo llamado "archivo" con la frase de prueba "prueba".

Normalmente, cuando lo uso gpg, generalmente solo corro gpg -c filey me pide la frase de contraseña. Pero como quiero que este script haga todo por sí mismo, me gustaría proporcionar la frase de contraseña como parte del comando.

Ahora cuando trato de usar:, gpg -c file --passphrase testgenera:

uso: gpg [opciones] --simétrico [nombre de archivo]

Qué costuras me gusta que quiera usar gpg --passphrase test --symmetric file. Pero si hago eso, aparece un cuadro de diálogo pidiéndome la contraseña que debo usar; que no es lo que quiero

¿Cómo configuro los argumentos correctamente?

Jens Erat
fuente

Respuestas:

7

En GnuPG, las opciones deben preceder a los comandos, por lo tanto, la --passphraseopción debe venir antes --symmetric.

Con respecto a la ventana de entrada de pin, que aparece de todos modos (aunque la use --passphrase), probablemente ya esté usando GnuPG 2, que --batchdebe usarse junto con --passphrase. De las páginas del manual:

--passphrase string
    Use string as the passphrase. This can only be used if only one
    passphrase is supplied. Obviously, this is of very questionable
    security on a multi-user system. Don't  use this option if you
    can avoid it.  Note that this passphrase is only used if the
    option --batch has also been given.  This is different from
    GnuPG version 1.x.

Tenga en cuenta que en los sistemas multiusuario, todos los demás usuarios podrán leer su línea de comando y, por lo tanto, también la frase de contraseña mientras se ejecuta GnuPG. Mejor use una de las otras --passphrase-*opciones para leer desde un archivo o tubería.

Jens Erat
fuente
¿Lo que estás diciendo es que mi orden de los argumentos --passphrasey --symmetricera realmente correcto, pero solo me faltaba el --batchargumento? Porque eso no funcionó para mí. He intentado agregar --batchambos antes y después, por si acaso. Además, no sé cómo verificar si lo que estoy usando es GPG 2, pero la parte que ha pegado que dice Note that this passphrase is only used if the option --batch has also been given.que no existe en mi manpágina.
¿Qué sistema operativo / distribución estás usando? gpg --versiondebería proporcionar información sobre la versión de GnuPG que está utilizando. ¿Tienes un gpg2binario?
Jens Erat
Estoy usando Xubuntu 14.04., La versión de gpges 1.4.16. Inspirado por sus comentarios, descubrí que gpg2 se está desarrollando por separado, así que lo instalé y lo probé, pero se queja de queno valid OpenPGP data found. processing message failed: Unknown system error
Jens, eres súper increíble y respondes muchas preguntas con excelentes respuestas, pero te equivocas en un punto: "las opciones deben preceder a los comandos, por lo tanto, la opción --passphrase debe aparecer antes que - simétrica". No es cierto del todo.
rsaw
@rsaw: Tiene razón en parte , --symmetricy --passphraseel orden no parece ser relevante, pero intente --exportdefinirlo --armordespués. En general, las opciones deben preceder a los comandos, que también es el orden definido en las páginas del manual.
Jens Erat
2

Si gpg --versioninforma v2, debe agregar la --batchopción.

Según la salida de sintaxis, probablemente esté utilizando v1, en cuyo caso desea:

gpg --passphrase PASS -c --no-use-agent FILE

Tenga en cuenta que el orden de las opciones no es importante; sin embargo, cualquier archivo debe ser el último argumento.

rsaw
fuente
1

El uso --pinentry-mode loopbackfunciona con --passphrase& --passphrase-[file/fd], y le permitirá ingresar nueva información, en caso de conflictos de nombre de archivo, por ejemplo:

File 'xyz.gpg' exists. Overwrite? (y/N)n
Enter new filename: xyz2.gpg

a diferencia de --batcheso fallará rápidamente, diciendo...failed: File exists


Si originalmente había agregado la opción detallada ( -v) primero, debería haber visto algo como:

$ gpg -v -c file --pinentry-mode loopback --passphrase-file=passfile
gpg: Note: '--pinentry-mode' is not considered an option
gpg: Note: '--passphrase-file=passfile' is not considered an option
usage: gpg [options] --symmetric [filename]

indicando claramente que no le gustaba algo sobre poner -c( --symmetric) primero.


Considero el comportamiento de gpg2 de ignorar las --passphraseopciones a menos que esté acompañado de --batchun error.

Xen2050
fuente