¿Cómo utilizar GnuPG con --passphrase?

¿Cómo utilizar GnuPG con --passphrase?

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

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

Ahora, cuando intento usar: gpg -c file --passphrase test, sale:

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

Lo cual parece que quiere que use gpg --passphrase test --symmetric file. Pero si hago eso, aparece un cuadro de diálogo que me pide la frase de contraseña a utilizar; que no es lo que quiero.

¿Cómo configuro los argumentos correctamente?

Respuesta1

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

Con respecto a la ventana de ingreso de PIN, que aparece de todos modos (aunque uses --passphrase), probablemente ya estés usando GnuPG 2, que debe --batchusarse junto con --passphrase. De las páginas de 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 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. Es mejor utilizar una de las otras --passphrase-*opciones para leer desde un archivo o canalización.

Respuesta2

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 -vprimero la opción detallada ( ), 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 con bastante claridad que no le gustaba algo acerca de poner -c( --symmetric) primero.


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

Respuesta3

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

Según el resultado de sintaxis, probablemente esté usando la versión 1, 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.

Respuesta4

Puedes usarlo así:

gpg --passphrase hello -c --no-symkey-cache --cipher-algo AES256 --batch basic.c

Además, el uso de lotes no es un error, está escrito en la documentación.aquí:

captura de pantalla de documentos

información relacionada