GPG trava quando chaves privadas são acessadas

15

Eu gosto de assinar meus commits do git com a minha chave PGP, então fiquei bastante alarmado quando fui, git commit -Smas em vez de solicitar minha senha de chave PGP, o git começou a travar. Não faço alterações na minha configuração de GPG há vários meses e fiz muitas confirmações desde então sem nenhum problema. Além disso, quando tento visualizar minhas chaves privadas com gpg -K, o gpg trava. No entanto, quando corro gpg -kpara exibir minhas chaves públicas, ela retorna a lista normalmente. Espero que alguém tenha uma idéia do que está causando esse problema e como corrigi-lo.

John Leuenhagen
fonte
você está fazendo isso sobre ssh? Nesse caso, você tem gpg-agentou uma configuração semelhante no .bashrc (etc) do sistema remoto e configurada para solicitar a exibição X do controle remoto ou semelhante? Eu tive problemas semelhantes no passado (por exemplo, fazer o ssh de um terminal na minha caixa mythtv para a minha máquina desktop para executar algo que requer gpg. também tive problemas semelhantes ssh-agent) e a força bruta "consertou" com export GPG_TTY=$(tty)o comando .bashrc, para garantir que o prompt esteja sempre no tty atual. Eu não suporto GUI senhas solicitações de qualquer maneira.
28517
1
Não, eu não estou fazendo isso por SSH. O estranho é que descobri que, se eu matar o gpg-agent, o gpg funcionará novamente. Estou tentando descobrir o porquê e fazer uma solução a longo prazo.
John Leuenhagen
Acabei de notar na gpg-agentpágina do manual que definir GPG_TTY como acima não é algo que eu hackeei para funcionar, é necessário. A página de manual diz que você deve sempre configurá-lo no seu .bashrc como eu fiz e também diz It is important that this environment variable always reflects the output of the tty command.- deve ter sido de onde eu o obtive. Outra coisa que você precisa ter cuidado é o programa de pinentry usado pelo gpg-agent. Eu tenho o meu conjunto (in ~/.gnupg/gpg-agent.conf) para/usr/bin/pinentry-curses
cas 28/07

Respostas:

20

Me deparei com esse problema exato (OSX Sierra 10.12.6, gpg / GnuPG 2.2.5)

Comandos que seriam interrompidos:

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

Minha solução foi a mesma mencionada por John acima (por exemplo, kill gpg-agent), pois a maioria dos outros métodos de como posso reiniciar o gpg-agent também seria interrompida.

# Solution    
pkill -9 gpg-agent

Então, para assinar commits git, defino o env tty como mencionado por cas acima e também em gpg-fail-to-sign-commit-object .

export GPG_TTY=$(tty)
CoffeeMonster
fonte
Então você precisa re-matar o gpg toda vez que reiniciar? É o que tenho que fazer há muito tempo. Espero que encontremos uma maneira de corrigi-lo para sempre.
John Leuenhagen 22/03
Apenas comecei a ter o problema. Matar a gpg-agentparece ser a única maneira de fazê-la funcionar novamente.
Alexis Tyler