Saltar al contenido

¿Cómo usar el argumento passphrase-fd de Gnupg?

Solución:

Para usar la opción gpg --passphrase-fd en GnuPG v2, debe especificar el --batch parámetro. Primero explicare como --passphrase-fd funciona, y luego ve a los ejemplos.

--passphrase-fd le dice a GnuPG de qué descriptor de archivo (-fd) se espera que venga la frase de contraseña. Los descriptores de archivo estándar son STDIN (0), STDOUT (1) y STDERR (2). Para el contexto de esta pregunta, normalmente solo estaría preocupado por STDIN (0).

No especificó de dónde desea que provenga la frase de contraseña, por lo que demostraré el uso de STDIN (entrada estándar) de varias maneras.

--passphrase-fd 0 le dice a GnuPG que recupere la frase de contraseña de la entrada en el shell actual; Entonces, por ejemplo, si desea que GnuPG obtenga los datos de la frase de contraseña en la siguiente línea de entrada de la consola, el comando y la salida serían así:

gpg2 --batch --passphrase-fd 0 --armor --decrypt /path/to/encrypted_file.pgp
<next line of input is passphrase followed by hitting enter>
gpg: encrypted with 1024-bit RSA key, ID EC18C175, created 2013-10-26
      "testkey4321 (4321) <[email protected]>"
this is a test... this is only a test...

En el ejemplo anterior, la frase de contraseña se proporcionó a través del descriptor de archivo 0 (STDIN), que proporcionamos al ingresarlo en la entrada estándar actual de los shells.

En el siguiente ejemplo, le diremos a GnuPG que recupere la frase de contraseña de la entrada en el shell actual que en realidad es la salida de otro comando (echo, en este caso, que simplemente “hace eco” de lo que le dice):

echo "mypassphrase" | gpg2 --batch --passphrase-fd 0 --armor --decrypt /path/to/encrypted_file.pgp
gpg: encrypted with 1024-bit RSA key, ID EC18C175, created 2013-10-26
      "testkey4321 (4321) <[email protected]>"
this is a test... this is only a test...

Otro ejemplo que vuelca el contenido de un archivo que contiene la frase de contraseña a STDIN:

cat /path/to/file_with_passphrase | gpg2 --batch --passphrase-fd 0 --armor --decrypt /path/to/encrypted_file.pgp
gpg: encrypted with 1024-bit RSA key, ID EC18C175, created 2013-10-26
      "testkey4321 (4321) <[email protected]>"
this is a test... this is only a test...

En resumen, --passphrase-fd simplemente le dice a GnuPG que desea alimentarlo con la frase de contraseña requerida a través de un descriptor de archivo estándar; la diferencia entre GnuPG v2 y GnuPG es simplemente la --batch parámetro.

Los ejemplos anteriores deberían funcionar igual en entornos Windows y * nix, con la única diferencia de que en Windows, dependiendo de su configuración y versión, tendrá que reemplazar cat con type para volcar el contenido de un archivo a STDIN.

La respuesta de kylehuff todavía no funcionaba para mí, con gpupg todavía apareciendo una solicitud de contraseña.

Según https://wiki.archlinux.org/index.php/GnuPG#Unattended_passphrase con gnupg versión 2.1.0 y superior, debe realizar pasos adicionales para admitir --passphrase-fd

Primero, edite la configuración de gpg-agent para permitir el modo de entrada de pin de bucle invertido: ~ / .gnupg / gpg-agent.conf

allow-loopback-pinentry

Reinicie el proceso gpg-agent si se está ejecutando para que el cambio surta efecto.

En segundo lugar, la aplicación debe actualizarse para incluir un parámetro de línea de comandos para usar el modo de bucle invertido de esta manera:

$ gpg --pinentry-mode loopback ...

Usando GPG4win / gpg 2.2.3: para usar el passphrase-fd 0 y omitir el mensaje, puedo confirmar que lo siguiente funciona:

--pinentry-mode loopback
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *