GPG se bloquea cuando se accede a claves privadas

16

Me gusta firmar mis confirmaciones de git con mi clave PGP, así que estaba bastante alarmado cuando fui, git commit -Spero en lugar de solicitar mi frase de contraseña de clave PGP, git comenzó a colgar. No he realizado ningún cambio en mi configuración de GPG en varios meses y he realizado muchos compromisos desde entonces sin ningún problema. Además, cuando intento ver mis claves privadas con gpg -K, se bloquea gpg. Sin embargo, cuando corro gpg -kpara ver mis claves públicas, devuelve la lista como de costumbre. Esperemos que alguien tenga una idea de qué está causando este problema y cómo solucionarlo.

John Leuenhagen
fuente
estás haciendo esto por ssh? en caso afirmativo, ¿tiene gpg-agentuna configuración similar en el .bashrc (etc.) del sistema remoto y está configurado para que aparezca en la pantalla X del control remoto o similar? He tenido problemas similares en el pasado (p. ej., enviando desde un terminal en mi caja de mito a mi máquina de escritorio para ejecutar algo que requiere gpg. También tuve problemas similares con ssh-agent), y la fuerza bruta lo "solucionó" export GPG_TTY=$(tty)en el .bashrc, para asegurarse de que la solicitud siempre esté en el tty actual. No puedo soportar los mensajes de GUI passwd de todos modos.
cas
1
No, no lo estoy haciendo por SSH. Lo extraño es que descubrí que si mato a gpg-agent, gpg funciona de nuevo. Estoy tratando de averiguar por qué y hacer una solución a largo plazo.
John Leuenhagen
Acabo de notar en la gpg-agentpágina del manual que configurar GPG_TTY como se describe arriba no es algo que pirateé para trabajar, es obligatorio. La página de manual dice que siempre debe configurarlo en su .bashrc como lo hice yo, y también dice It is important that this environment variable always reflects the output of the tty command.: debe haber sido de donde lo obtuve. Otra cosa que debe tener cuidado es el programa de pinentry utilizado por gpg-agent. Tengo conjunto de minas (en ~/.gnupg/gpg-agent.conf) a/usr/bin/pinentry-curses
cas

Respuestas:

21

Me encontré con este problema exacto (OSX Sierra 10.12.6, gpg / GnuPG 2.2.5)

Comandos que colgarían:

gpg -K # --list-secret-keys
gpg -d # --decrypt
gpg --edit-key
gpgconf --kill gpg-agent

Mi solución fue la misma que mencionó John anteriormente (es decir, kill gpg-agent), ya que la mayoría de los otros métodos de how-can-i-restart-gpg-agent también se bloquearían.

# Solution    
pkill -9 gpg-agent

Luego, para firmar git commits, configuré el tty env como se mencionó anteriormente en cas y también en gpg-failure-to-sign-commit-object .

export GPG_TTY=$(tty)
CoffeeMonster
fuente
Entonces, ¿tienes que volver a matar gpg cada vez que reinicias? Eso es lo que he tenido que hacer durante mucho tiempo. Espero que encontremos una manera de arreglarlo para siempre.
John Leuenhagen
Acabo de empezar a tener el problema yo mismo. Matar gpg-agentparece ser la única forma de hacerlo funcionar nuevamente.
Alexis Tyler