¿La línea de comando de Windows muestra mis claves GPG, pero git bash no?

¿La línea de comando de Windows muestra mis claves GPG, pero git bash no?

Instalé GPG4Win y Kleopatra en mi sistema Windows 10 e importé mis archivos de claves públicas y privadas que se crearon en otra máquina. Mi objetivo es firmar mis confirmaciones en Github usando estas claves (lo que hice en el pasado desde la máquina anterior). Después de importar las claves, ejecuto este comando en elLínea de comando de Windows o Powershell, y muestra las claves:

C:\Users\michael>gpg --list-keys
C:\Users\michael\AppData\Roaming\gnupg\pubring.kbx
---------------------------------------------
pub   rsa4096 2020-01-14 [SC]
      <snipped the fingerprint>
uid           [ultimate] Michael (Github) <[email protected]>
sub   rsa4096 2020-01-14 [E]

Sin embargo, cuando ejecuto estos comandos en git bash (reiniciando git bash después del primero), no se muestra nada:

$ git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
$ gpg --list-secret-keys
$ gpg --list-keys

¿Por qué aparecen las claves en la línea de comando de Windows, pero no en git bash (incluso después de configurar correctamente el programa GPG)? Supongo que todavía tiene algo que ver con la ruta, pero pensé que establecer la configuración global de git solucionaría el problema.

Respuesta1

Tuve el mismo problema. Para mí, el problema fue que de alguna manera, mi versión instalada de GPG4WIN sabía que debía buscar en otro lugar que no fuera la carpeta home/.gnupg predeterminada para mi kbx "real". Puedes ver esto llamando gpg --versiona CMD y en Rstudio/Git bash. Mire la primera línea después de la exención de responsabilidad de la garantía; comienza con "Inicio". Su versión de git será la predeterminada; su versión CMD (que muestra sus claves) será algo así como C:\Users\USERNAME\AppData\Roaming\gnupg. Lo que puedes hacer es crear una variable de entorno llamadaGNUPGHOMEy configúrelo en la ubicación de su verdadero hogar. Esto anulará cualquier otra configuración y la próxima vez que llame a gpg desde bash, debería encontrar sus claves.

Respuesta2

La sugerencia de @avraham ayudó a obligar a GPG a usar el directorio GPG4WIN; sin embargo, git todavía estaba usando su propio binario gpg almacenado en el que no podía leer mi repositorio GPG GPG4WIN.

Para forzar a git bash a usar la versión de GPGWIN, tuve que reescribir la variable PATH usando .bash_profile para priorizar el orden de búsqueda de carpetas, de modo que se buscara primero en la carpeta GPG4WIN. (De forma predeterminada, git bash usa en su versión de gpg, C:\Program Files\Git\usr\bin\gpg.exe porque sus carpetas están más arriba en la configuración de la ruta).

Antes de reescribir la variable de ruta, las rutas propias de git se enumeraban antes que cualquier ruta heredada de las variables de entorno de Windows:

$ where gpg
C:\Program Files\Git\usr\bin\gpg.exe
C:\Program Files (x86)\GnuPG\bin\gpg.exe

Después de escribir el siguiente archivo .bash_profile en mi directorio de inicio:

$ cat .bash_profile
# Custom configuration file to force GIT bash to use GPG from GPG4WIN
export PATH=/c/PROGRA~2/GnuPG/bin:/c/Users/ez/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/usr/bin

NOTA: Estoy usando el nombre corto de 'Archivos de programa (x86)' para evitar problemas de interpretación por parte de bash.

Después de esto, obtuve .bash_profile y finalmente, git bash usó la versión GPG4WIN de gpg desde la línea de comando. Para verificar que esto funcionó, ejecute where gpgnuevamente:

$ where gpg
C:\Program Files (x86)\GnuPG\bin\gpg.exe
C:\Program Files\Git\usr\bin\gpg.exe

Respuesta3

En mi caso, install Git Bashtambién instalará gpg en la ruta C:\Program Files\Git\usr\bin\gpg.exe, y también instalo GPG4Win y Kleopatra.

En Bash, corro where gpgy obtengo ambos caminos.C:\Program Files\Git\usr\bin\gpg.exe C:\Program Files (x86)\GnuPG\bin\gpg.exe

En CMD, ejecuto where gpg, obtengoC:\Program Files (x86)\GnuPG\bin\gpg.exe

En PowerShell, ejecuto (get-command gpg.exe).Path, obtengoC:\Program Files (x86)\Gpg4win\..\GnuPG\bin\gpg.exe

información relacionada