gpg com gpg-agent nunca pede senha

17

Sem o gpg-agent em execução, posso digitar minha senha para assinar as coisas:

$ echo 123 | gpg -s

You need a passphrase to unlock the secret key for
user: "Mr. Ops <[email protected]>"
2048-bit RSA key, ID 20F31903, created 2014-03-13

gpg: gpg-agent is not available in this session
Enter passphrase:

Funciona bem. Mas eu não quero digitar minha senha o tempo todo, então eu corro gpg-agent:

$  eval $(gpg-agent --daemon)

Agora, seria de esperar que minha senha fosse solicitada pelo menos uma vez, mas nunca o sou e todas as operações que usam gpg falham.

$ echo 123 | gpg -s

You need a passphrase to unlock the secret key for
user: "Mr. Ops <[email protected]>"
2048-bit RSA key, ID 20F31903, created 2014-03-13

gpg: cancelled by user
gpg: no default secret key: bad passphrase
gpg: signing failed: bad passphrase

Como obtenho minha senha armazenada no agente? Depois de tê-lo lá, como mantê-lo nas sessões de login? (Idealmente, nunca mais quero ser avisado.) Isso é no Ubuntu 12.04.4 com os pacotes padrão do apt-get gpg, caso isso importe.

jsd
fonte

Respostas:

18

Isso acontece quando gpg-agentnão se sabe qual TTY solicitar, o que está acontecendo aqui porque você está redirecionando o stdin.

Você pode colocar export GPG_TTY=$(tty)em sua ~/.bashrcpara configurar o TTY para cada shell de login.

Os documentos emgpg-agent têm mais detalhes.

leedm777
fonte
7

Meio tarde, mas neste momento eu enfrento esse problema quando faço o login remoto no meu PC (Linux-Centos) e tento descriptografar um arquivo PGP. Tentei a sugestão de Dave, sem sorte, pesquisando no Google, encontrei isso

gpg: cancelado pelo usuário

Esta parte resolve meu problema:

Finalmente, depois de permitir que outros r + w em tty pareçam resolver esse problema

[root @ host ~] # chmod o + rw $ (tty)

Espero que isso possa ajudar outra pessoa.

BR.

Vielinko
fonte
Este funcionaria .. Basta fazer a parte chmod tty antes de fazer su para o usuário
user169015
Esta é inseguro - você deve garantir que o tty é de propriedade do usuário correto, ou talvez usar um grupo com os usuários necessários no e permissões de grupo :)
Legooolas