gpg2 pinagem falha sem X

1

O que está funcionando

Meu pinentry gpg-agent funciona bem em X. Eu posso rodar

echo "test" | gpg2 -ase --default-recipient-self | gpg2

para armazenar em cache minhas senhas e depois executar killall gpg-agent -1 para liberá-las.

Por padrão, ele abre o pinentry-gtk (pelo que parece) e solicita minha senha.

O que não está funcionando

No entanto, se eu tentar executar o mesmo comando sem um servidor X, parece que o gpg2 está interrompido (sem prompt ou qualquer coisa). Se eu matá-lo, então eu posso ver que há também um processo pinentry que continua a existir, mas não em qualquer lugar útil.

O que eu espero que aconteça

Espero que a execução de gpg2 sem um servidor X me dê um prompt de xingamentos de pinagem, da mesma forma que pass faz. Além disso, parece que lembro que, com a versão mais antiga do gpg, ele apenas me solicitou a senha do stdin, e não sei bem por que isso também não acontece.

O que tentei

Eu tentei as seguintes "correções", mas nenhuma delas fez com que o comando mencionado fosse executado corretamente. De fato, forçar curses de pinagem faz com que o comando mencionado falhe mesmo com o ambiente X ( pass ainda funciona).

  • Definindo pinentry-program /usr/bin/pinentry-curses em 'gpg-agent.conf' '

  • Iniciando o gpg-agent assim: gpg-agent --daemon --keep-tty --use-standard-socket --pinentry-program=/usr/bin/pinentry-curses

  • usando uma variável de ambiente: export PINENTRY_USER_DATA="USE_CURSES=1”

Informação de fundo

Eu tenho um arquivo de configuração .gpg-agent quase vazio; tudo o que tem são tempos limite de cache.

Estou ligando para o gpg-agent diretamente no login como eval $(gpg-agent --daemon) . Eu não estou inicializando no X, então eu uso o getty para logar.

    
por rexroni 13.12.2016 / 15:03

1 resposta

3

Ops ... a resposta foi no valor de man gpg-agent da primeira tela. Eu precisava adicionar as seguintes linhas ao meu ~ / .bashrc:

GPG_TTY=$(tty)
export GPG_TTY

O valor incorreto de GPG_TTY explica porque as curses de pinentry estavam em execução, mas não onde eu precisava.

nota: Como a saída de tty muda entre o login do console e depois que eu inicio meu servidor X, isso precisa ser executado em todos os ~ / .bashrc (enquanto a maioria da minha exportação ' d variáveis de ambiente são configuradas para serem executadas somente no login).

    
por 14.12.2016 / 14:11