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 primero 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.