Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

789
Vistas
'Git: gpg no pudo firmar los datos' en el código de Visual Studio

Después de una nueva instalación de Linux, intento configurar mi entorno y sigo recibiendo el Git: gpg failed to sign the data al realizar cambios localmente. Estoy usando Visual Studio Code, propietario, no una versión de código abierto.

.gitconfig:

 [user] name = djweaver-dev email = djweaver@djweaver.dev signingkey = 37A0xxxx... [core] excludesfile = /home/dweaver/.gitignore_global [commit] gpgSign = true

ay además , no puedo encontrar una manera de copiar el registro de salida ni puedo encontrar dónde está ese registro, así que aquí hay una foto:

registro de salida

Pasos que he tomado hasta ahora:

  • nueva clave generada (RSA 4096) en gnugp
  • clave de firma agregada a .gitconfig global
  • establezca "git.enableCommitSigning": true en la configuración de Visual Studio Code
  • clonado mi repositorio de github

Por lo general, cuando me comprometo en el pasado, aparece un cuadro de diálogo que solicita la autenticación GPG al realizar la confirmación. No entiendo esto ahora, solo el cuadro de diálogo de error.

ACTUALIZACIÓN: Bueno, ahora estoy realmente confundido. Reinicié vscode (no es la primera vez que hago esto en este proceso) y listo, funciona. Lo único que se me ocurre es que tal vez cambié el directorio de alguna manera. De cualquier manera, ahora funciona.

ACTUALIZACIÓN: curiosamente, volví a este mismo problema casi un mes después de una nueva instalación de arco. He intentado todo lo que he podido encontrar en este sitio, y nada funciona.

Intenté agregar export GPG_TTY=$(tty) a .bash_profile, y también a .bashrc

Registro de Git:

 Looking for git in: git Using git 2.26.2 from git > git rev-parse --show-toplevel > git rev-parse --git-dir Open repository: /home/dw/dev/website > git status -z -u > git symbolic-ref --short HEAD > git rev-parse master > git rev-parse --symbolic-full-name master@{u} > git rev-list --left-right master...refs/remotes/origin/master > git for-each-ref --format %(refname) %(objectname) --sort -committerdate > git remote --verbose Failed to watch ref '/home/dw/dev/website/.git/refs/remotes/origin/master', is most likely packed. Error: ENOENT: no such file or directory, watch '/home/dw/dev/website/.git/refs/remotes/origin/master' at FSWatcher.start (internal/fs/watchers.js:165:26) at Object.watch (fs.js:1270:11) at Object.t.watch (/usr/lib/code/extensions/git/dist/main.js:1:604919) at T.updateTransientWatchers (/usr/lib/code/extensions/git/dist/main.js:1:83965) at e.fire (/usr/lib/code/out/vs/workbench/services/extensions/node/extensionHostProcess.js:46:87) at e.updateModelState (/usr/lib/code/extensions/git/dist/main.js:1:103179) > git config --get commit.template > git check-ignore -v -z --stdin > git check-ignore -v -z --stdin > git commit --quiet --allow-empty-message --file - -S error: gpg failed to sign the data fatal: failed to write commit object > git config --get-all user.name > git config --get-all user.email

La misma configuración que la última vez, user.name y user.email coinciden con cada clave con la que lo he estado probando... coincidencias de user.signingkey . No estoy seguro de a dónde más ir con este, ya que lo probé en repositorios locales recién inicializados, así como en repositorios que extraje de github con la versión oficial de MS vscode (AUR) y OSS, en el emulador de terminal vscode como así como la terminal gnome con los mismos resultados, por lo que tiene que ser una cosa de git o una cosa de gnugp.

Lo que he notado es que después de confirmar sin firmar, funcionará inmediatamente después: se me solicita mi contraseña clave la primera vez, luego funciona en las confirmaciones posteriores hasta una cantidad aparentemente aleatoria de minutos más tarde, simplemente ya no funciona. y hay que repetir el proceso.

Hubo algunos usuarios de macos que publicaron sobre tener un gpg-agent parado ejecutándose en segundo plano y lo arregló para ellos, sin embargo, estoy viendo:

 [dw@dwLinux website]$ gpg-agent gpg-agent[2870]: gpg-agent running and available

Lo interesante también es que al hacer echo "test" | gpg --clearsign Obtengo los mismos resultados: funciona por un corto período de tiempo, luego ya no puedo firmar.

ACTUALIZAR

Bien, entonces el día número 2 de tratar de arreglar esto. Para descartar la teoría de gpg-agent como se describe aquí , seguí las instrucciones sobre cómo recargar gpg-agent usando el comando $ gpg-connect-agent reloadagent /bye demostrado en Arch Linux Wiki

esto no tuvo efecto

Entonces, dado que puedo reproducir este problema en vscode official, os code y vscodium, así como en bash, pensé que tal vez se trataba de un problema relacionado con los permisos, como suelen ser muchos problemas con Linux . Agregué a mi usuario a todo tipo de grupos, incluido el root, y esto tampoco tuvo ningún efecto, así que creo que puedo descartar lo siguiente con seguridad:

  • Código VS
  • GnuGP
  • gpg-agente
  • permisos de linux

Entonces, mi siguiente enfoque fueron los archivos de configuración en sí, pero como se indicó antes, las credenciales coinciden con la clave en .gitconfig y mi .bash_profile se configuró correctamente con export GPG_TTY=$(tty) .

Una nota interesante sobre esto de los documentos oficiales de GnuPG muestra una discrepancia de sintaxis entre su forma y la forma en que se le indica que agregue esto a .bash_profile en los documentos de GitHub aquí

De GnuPG: "La razón más común para esto es que la variable de entorno GPG_TTY no se ha configurado correctamente. Asegúrese de que se haya configurado en un dispositivo tty real y no solo en '/dev/tty'; es decir, 'GPG_TTY= tty' es claramente incorrecto; lo que desea es 'GPG_TTY=tty'; tenga en cuenta las marcas posteriores. También asegúrese de que esta variable de entorno se exporte, es decir, debe seguir la configuración con 'exportar GPG_TTY'"

Como entendí, $(whatever) en bash era ejecutar un comando, pero como medida de seguridad, agregué .bash_profile usando ambas formas y ninguna resolvió el problema.

Una última cosa

En esta publicación , el usuario habla de que la autenticación gpg-agent no está disponible cuando se daemoniza y otra aplicación inicia el acceso gpg (como un IDE como VSCode), lo que explica cómo puedo firmar compromisos temporalmente después de enviar un archivo aleatorio o hacer echo "test" | gpg --clearsign y estar autenticado... pero, por desgracia, como la mayoría de las otras 'soluciones' a este tema, revelan que todo lo que tenían que hacer al final era agregar export GPG_TTY=$(tty) a su .bash_profile, que tengo ya probado.

A dónde ir desde aquí?

Todavía no puedo explicar por qué funcionó en mi instalación anterior y, francamente, no ha cambiado mucho. Por lo general, realizo instalaciones nuevas con frecuencia y mantengo una compilación de Arch Linux bastante mínima con lts kernel cada vez que w/base-devel y nodejs/python/git/vscode/firefox/discord es prácticamente todo mi flujo de trabajo. Estoy sin ideas.

over 4 years ago · Santiago Trujillo
4 Respuestas
Responde la pregunta

0

Tuve el mismo problema hace unos días mientras usaba VS Code con WSL. El problema es que VS Code no carga el archivo .profile (y todas las variables de entorno que contiene) correctamente (intente ejecutar este comando pero no obtiene el resultado correcto: echo $GPG_TTY ). Afortunadamente, me funcionó configurar la opción "-l" para los argumentos de shell en las preferencias de VS Code. Esto garantiza que el .profile (o .zprofile ) se cargue correctamente. Agregué estas líneas a settings.json :

 "terminal.integrated.shellArgs.linux": [ "-l" ]

Asegúrese de agregar export GPG_TTY=$(tty) en su archivo .profile y reinicie su terminal y VS Code.

over 4 years ago · Santiago Trujillo Denunciar

0

¿Quizás git no puede encontrar gpg? Ese fue mi problema al trabajar con VSCode y usar Remote-Containers para crear contenedores de desarrollo. Intente ejecutar esto en la Terminal dentro de VSCode (en el contenedor)

 git config --global --unset gpg.program git config --global --add gpg.program /usr/bin/gpg

o donde sea que se encuentre su gpg. Puedes averiguarlo escribiendo

 which gpg

Si eso funciona, puede ponerlo en su Dockerfile para su contenedor de desarrollo.

over 4 years ago · Santiago Trujillo Denunciar

0

Tengo el mismo problema, y lo he resuelto.

Antecedentes

  • Mac OS
  • GPG Suite para generar clave GPG
  • pinentry-mac

Como soluciono este problema

Vi esta respuesta y la seguí.

  1. obtener llaves
 gpg2 --list-keys

Resultado

 /Users/xxuser/.gnupg/pubring.kbx --------------------------------- pub dsa2048 2010-08-19 [SC] [expires: 2024-05-11] 85E38F69046BSDFB07B76D78F0500D026C4 uid [ unknown] GPGTools Team <team@gpgtools.org> uid [ unknown] [jpeg image of size 6329] sub rsa4096 2014-04-08 [S] [expires: 2024-05-11] sub rsa4096 2020-05-11 [E] [expires: 2024-05-11] pub rsa4096 2020-05-04 [SC] [expires: 2024-05-03] B97E9964ACAD1928300D37CC8A9E3745558E41AF uid [ unknown] GPGTools Support <support@gpgtools.org> sub rsa4096 2020-05-04 [E] [expires: 2024-05-03] pub rsa4096 2021-07-29 [SC] [expires: 2025-07-29] 926E268C01892E8A2FCCD2A101CEB6267272A9A5 uid [ultimate] xxuser <x@xxgolo.com> sub rsa4096 2021-07-29 [E] [expires: 2025-07-29]
  1. Dado que x@xxgolo.com es el correo electrónico para el que creo el secreto, 926E268C01892E8A2FCCD2A101CEB6267272A9A5 es el código clave que necesito.
  2. Deje que el usuario de git esta clave.
 git config --global user.signingkey 926E268C01892E8A2FCCD2A101CEB6267272A9A5
  1. Ahora debería funcionar.
 git commit -S -m "This is a signed commit"

nota Si necesita que funcione con Github, debe agregar su clave GPG pública a Github, siguiendo esta Guía.

over 4 years ago · Santiago Trujillo Denunciar

0

primero asegúrese de agregar export GPG_TTY=$(tty) en su .bashrc

Aparentemente, VSCode no solicita la frase de contraseña y es por eso que da un error. no se la razon Mi solución personal, haga una confirmación de consola primero o ejecute la siguiente línea

 echo "test" | gpg --clearsign
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda