Skip to main content

Hoy en día, es importante incorporar como buena práctica la utlización de GPG al momento de firmar nuestros commit y “pushearlos” al repositorio remoto git.

Luego de agregar un usuario al sistema operativo para que pueda ser capaz de utilizar todas las funciones (git y gpg), me encuentro con el siguiente error

-bash 5.2: $ git commit -m "Test"
error: gpg failed to sign the data
fatal: failed to write commit object

Se empieza a realizar el troubleshooting firmando un mensaje impreso por terminal y muestra el siguiente error

bash 5.2: $ echo "test" | gpg --clearsign -u [email protected]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

test
gpg: pinentry launched (7025 curses 1.2.1 /dev/pts/0 linux - 20600/0/5 1000/1000 -)
gpg: signing failed: Permission denied
gpg: [stdin]: clear-sign failed: Permission denied

El problema aparece como resultado de la forma de acceso al usuario. El usuario que inicio la sesión es “user1”. Luego, se procedió a ejecutar “su – user2”. Como resultado, quedan asociadas las variables de entorno a “user1”.

Hay varios workarround para este comportamiento. El que se abordará en este artículo es utilizar la consola con el usuario correspondiente que posea las claves GPG en su home (en este caso user 2 es el que realiza la acción). Como segunda solución, se puede utilizar el comando “script” con el fin de resetear la asociación del bash

-bash 5.2: $ su - user
-bash 5.2: $ script /dev/null

Luego, aparecerá en consola la posibilidad de ingresar la clave una vez que querramos ejecutar gpg

El contenido de este artículo esta bajo licencia Creative Commons.