Espero que el siguiente comando extraiga el archivo gpg sin pedir contraseña:
gpg --passphrase 1234 file.gpg
Pero pide la contraseña. ¿Por qué?
Esto también tiene el mismo comportamiento:
gpg --passphrase-file passfile.txt file.gpg
Yo uso Ubuntu con gnome 3, y recuerdo que estaba funcionando en Fedora
shell-script
gpg
Omid
fuente
fuente
gpg
ejecutar el comando correcto, no un alias ni un contenedor? Intenta/usr/bin/gpg --passphrase 1234 file.gpg
,type gpg
,gpg --version
yset | grep '^.\{0,9\}PG'
gpg --list-packets --batch myFile.gpg
solicita una frase de contraseña, mientras que no lo hace en GPG 1.x. Ese era mi problema (en un programa que estoy escribiendo), mientras pensaba que tenía su problema (la cosa --list-packets se ejecutó primero, antes de intentar descifrar, y no me di cuenta). Entonces, hice una nueva forma de determinar si los archivos estaban encriptados.Respuestas:
Estoy exactamente en tu mismo barco (funcionó en Fedora pero no en Ubuntu). Aquí hay un trabajo aparente que descubrí:
Explicación: Pasar
0
hace--passphrase-fd
que se lea desde STDIN en lugar de desde un archivo. Por lo tanto, canalizar la frase de contraseña--passphrase-fd
aceptará la cadena de contraseña especificada.fuente
--batch --yes
a lo anterior funcionó para mí.echo "encrypt me" | gpg --passphrarse "mypw" -c -o test.gpg
. ¿Cómo puedo solucionar esto?echo "encrypt me" | gpg --passphrase "mypassphrase" --batch --quiet --yes --no-use-agent -c -o encrypted.gpg
parece funcionar.Inappropriate ioctl for device
con y sin--batch
aquí (en gpg (GnuPG) 2.1.18).echo "hello" | cat
yecho "hello"| cat
ambos producen la misma cadena.Actualizado el 04/12/2017. (Agregando --batch para evitar la solicitud de frase de contraseña)
Puede que tenga que agregar la
--batch
opción:A partir de la versión 2 de
GPG
, la opción--batch
es necesaria para garantizar que no haya avisos ... Ok, mirando eso:Molesto:
¡suena bien! Bien ahora:
Si bien no
-d
se proporciona ningún parámetro (la misma sintaxis que la pregunta de SO), los datos descifrados defile.gpg
se extraerán a uno nuevofile
.Esto funciona bien!
fuente
--passphrase
parámetro funciona para operaciones por lotes y no solicita una contraseña.unset GPG_AGENT_INFO
e inclusoGPG_AGENT_INFO=/dev/null
, esto (continúa) funcionando ... ¿Tal vez la alteración$GPG_AGENT_INFO
puede ayudar? (Háganos saber; por favor responda, ¡Para gpg versión 2.x no necesita usar
--batch
, solofunciona con
--passphrase
&--passphrase-file
, y le permitirá ingresar nueva información, en caso de conflictos de nombre de archivo, por ejemplo:a diferencia de
--batch
eso fallará rápidamente, diciendo...failed: File exists
(probado en Debian Stable / Stretch's gpg 2.1.18. Este comportamiento de ignorar
--passphrase
opciones importantes realmente debería ser un error, si aún no lo es)fuente
Parece que estás usando gpg2. También debes incluir la
--batch
opción. (Si planea agregar esto a un script, también querrá agregarlo--no-tty
y probablemente--yes
).fuente
para mí, agregar "--no-use-agent" resolvió esto para "gpg (GnuPG) 1.4.16":
fuente
Si usa gpg (GnuPG) 2.2.7 Según la página de manual,
agregar
--pinentry-mode loopback
para trabajarPor ejemplo:
fuente
--batch
y--pinentry-mode loopback
para que funcione cualquier opción --passphrase ...? En v.2.1.18, la página de información dice lo mismo (pero no la página de manual) sobre lote y pinentry necesarios, pero todavía funciona solo con - pinentry ... Si ambos son realmente necesarios para v.2.2.7, entonces las cosas se están volviendo ridículos, los desarrolladores están introduciendo errores graves a propósitoFuncionó como magia para mí:
fuente
gpg: no valid OpenPGP data found. gpg: processing message failed: eof
. ¿Algunas ideas?fuente
has intentado hacer:
Fuente: aquí
fuente
Creo que un método bastante seguro para pasar la contraseña a la línea de comando es este:
Lo que esto hará es generar el comando "echo" y pasar un descriptor de archivo como nombre de ruta a gpg (por ejemplo, / dev / fd / 63). gpg leerá la clave desde allí. Mientras tanto, el comando echo debe ejecutarse en paralelo y debe finalizar instantáneamente, dejando la clave en el búfer del fd.
Los beneficios son:
fuente
No me creerá cuando le diga que en ubuntu gpg intenta preguntarle su contraseña si $ DISPLAY está configurado y lo toma de la línea de comando --contraseña si lo desarma. Esto funciona como se esperaba:
Solo otro ejemplo de sobre ingeniería, supongo.
fuente
Aquí hay un enlace a una respuesta de stackoverflow que puede ser de mayor ayuda; Tengo un proyecto que hace descifrado / cifrado masivo, y debido a que GnuPG es muy estricto con las frases de contraseña, aprendí de la manera difícil que
--passphrase
solo funciona en raras ocasiones. En cambio, considere la--passphrase-fd
opción para ser más confiable.Este script hace un uso adecuado de la
--passphrase -fd
opción y se ha probado públicamente a través de Travis-CI, donde puede encontrar registros de él en acción.Ahora no voy a publicar enlaces a una respuesta sin proporcionar un código de ejemplo aquí, así que aquí hay un script "independiente" actualizado con el que puedes jugar:
Si bien lo anterior no es tan elegante como la protección vinculada en GitHub, debería ser aún más funcional que la respuesta vinculada al comienzo de esta publicación.
Feliz pirateo.
fuente
Como se menciona en man gpg, se puede usar la siguiente opción
- modo modo pinentry Establece el modo pinentry en modo. Los valores permitidos para el modo son:
Entonces, el comportamiento predeterminado de gpg es solicitar al usuario la frase de contraseña, si cambia este modo de agente de usuario a "--pinentry-mode loopback", funciona perfectamente bien. comando completo
fuente
Un método simple que encontré trabajando en una máquina Linux es: 1) importar clave a gpg: => shell> gpg —importar private_key.key
2) descifrar dando el nombre del archivo de salida: => shell> gpg —output -d
2.1) Dar el comando anterior le pedirá que ingrese la paráfrasis. Ingrese la paráfrasis y descifrará el archivo gpg.
fuente
fuente
Poner al final de
~/.gnupg/gpg.conf
:Poner al final del archivo (quizás nuevo)
~/.gnupg/gpg-agent.conf
:Y luego ejecuta este comando:
Ahora puede ejecutar esto sin pedir contraseña:
Donde $ 1 es el texto a cifrar, $ 2 es la ID de usuario y $ 3 la contraseña.
Nota: No recuerdo por qué funciona, pero funciona. Si conoce los detalles, edítelos e insértelos aquí.
fuente
para Ubuntu 18.04 esto funcionó para mí
cifrar:
descifrar:
fuente