para gpg encriptar desencriptar comando archivos bash crontab gnupg

bash - encriptar - gpg para linux



archivo de encriptación gpg sin interacción del teclado (8)

Aquí está mi solución, basada en gpg2 (pero apuesto a que puedes aplicar una técnica similar a gpg)

$ gpg2 --edit-key {recipient email address} > trust > 5 (select 5 if you ultimately trust the key) > save

Esto le indicará a gpg2 que confíe en la clave por completo, para que pueda encriptar sin aviso

Estoy ejecutando el siguiente comando dentro de un crontab para encriptar un archivo y no quiero una interacción de teclado

echo "PASSPHRASE" | gpg --passphrase-fd 0 -r USER --encrypt FILENAME.TXT

pero tengo esta respuesta:

gpg: C042XXXX: There is no assurance this key belongs to the named user pub 40XXX/C042XXXX 2012-01-11 Name LastName. (comment) <[email protected]> Primary key fingerprint: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX Subkey fingerprint: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX It is NOT certain that the key belongs to the person named in the user ID. If you *really* know what you are doing, you may answer the next question with yes. Use this key anyway? (y/N)


Como David sugirió, el problema aquí es que gpg no confía en la clave pública que está usando para encriptar. Podrías firmar la llave como él explicó.

Una alternativa, especialmente si la clave puede estar cambiando ocasionalmente, sería --trust-model always a su comando gpg.

Aquí está el bit relevante de la página man:

--trust-model pgp|classic|direct|always|auto Set what trust model GnuPG should follow. The models are: pgp This is the Web of Trust combined with trust signatures as used in PGP 5.x and later. This is the default trust model when creating a new trust database. classic This is the standard Web of Trust as used in PGP 2.x and earlier. direct Key validity is set directly by the user and not calculated via the Web of Trust. always Skip key validation and assume that used keys are always fully trusted. You generally won''t use this unless you are using some external validation scheme. This option also suppresses the "[uncertain]" tag printed with signature checks when there is no evidence that the user ID is bound to the key. auto Select the trust model depending on whatever the internal trust database says. This is the default model if such a database already exists.


El enfoque de pirateo:

echo -n PASSPHRASE > phrase chmod 400 phrase #Make sure ONLY the user running the cron job can read the phrase yes | gpg --passphrase-fd 3 --recipient USER --encrypt FILENAME.txt 3<phrase

El problema subyacente es que la clave que tiene para el USUARIO no está firmada. Si confías en él, puedes firmarlo con

gpg --edit-key USER sign

Probablemente le haga un par de preguntas, dependiendo de su configuración. Haga esto una vez, entonces debería ser bueno ir en su crontab. Todavía recomendaría usar la solución que propuse, poniendo la frase de contraseña en un archivo separado y haciéndolo solo legible por el único usuario con el que se ejecute el comando. Si haces eso, puedes matar el yes | , y solo tiene la línea de cifrado.


Me estaba encontrando con esto también. No pude obtener la clave de firma para hacer algo interesante. Esto es lo que hice:

crea una clave gpg:

gpg --gen-key

obtener ID de clave larga (el resultado está en la quinta columna):

gpg --list-keys --with-colon [email protected]

Agregue la línea de clave de confianza a ~ / gnupg / gpg.conf

trusted-key 16DIGITALPHANUMERICKEYID

Línea de gpg en script de copia de seguridad:

gpg -e -r [email protected] backup_file.tgz

Cron de depuración: también estoy capturando salida de dubugging de cron enviando stdout y stderr a un archivo de registro en la línea de comandos de cron. Es útil saber


O bien, firme la clave (después de que haya mejorado la huella digital, por supuesto):

gpg --sign-key <recipient email address>

Después de eso, confías plenamente en la clave.

1 = I don''t know or won''t say 2 = I do NOT trust 3 = I trust marginally 4 = I trust fully 5 = I trust ultimately


Supongo que, como yo, mucha gente viene aquí para la parte de la pregunta "sin interacción con el teclado". Con gpg2 y gpg-agent, fue bastante complicado firmar / encriptar / descifrar cosas sin ninguna interacción con el teclado. Así es como crearía una firma cuando su contraseña de clave privada se guarde en un archivo de texto:

cat something_so_sign.xzy | gpg / --passphrase-file "plaintext_passphrase.txt" / --batch / --pinentry-mode loopback / -bsa

Cambia -b -s-según tus necesidades. Los otros interruptores son obligatorios. También puede usar --passphrase ''SECRET'' . Como ya se señaló, tenga cuidado con eso. Los archivos de texto sin formato no son mucho mejores, por supuesto.


Usa este comando, te ayudará

echo "PASSPHRASE" | gpg --passphrase-fd 0 --always-trust -r USER --encrypt FILENAME.TX


Cuando crea un certificado por primera vez con su id. De correo electrónico, seleccione un certificado completamente confiable, entonces cada vez que encripte un archivo, no hará preguntas como ... para obtener más información, abra la imagen en el enlace de arriba.

NO es seguro que la clave pertenezca a la persona nombrada en la ID de usuario. Si realmente sabe lo que está haciendo, puede responder la siguiente pregunta con un sí.

Use esta tecla de todos modos? (s / N)