Problema ao configurar a pinagem do GPG

1

Eu tenho dois hosts, A e B. Em A, eu tenho a configuração do programa gpg pinentry como pinentry-curses , mas não tenho ideia de como fiz isso. Eu não consigo encontrar a diferença entre A e B, mas em A (que não tem GUI) não consigo obter gpg para usar pinentry-curses . Em B, não parece importar se estou em um terminal, um console ou se tenho um ssh em outro host e volto. Eu sempre recebo pinentry-curses . Em A cada operação falha devido a incapacidade de inserir um alfinete.

Eu não sei mais o que verificar. Aqui está tudo o que eu tentei olhar.

Primeiro, o link simbólico pinentry :

me@b ~ % ls -l $(dirname $(which pinentry)) | grep pinentry
lrwxrwxrwx 1 root root            14 Dec  8 00:29 pinentry -> pinentry-gtk-2
-rwxr-xr-x 1 root root         60832 Dec  8 00:29 pinentry-curses
-rwxr-xr-x 1 root root         48256 Dec  8 00:29 pinentry-emacs
-rwxr-xr-x 1 root root         65088 Dec  8 00:29 pinentry-gnome3
-rwxr-xr-x 1 root root         73792 Dec  8 00:29 pinentry-gtk-2
-rwxr-xr-x 1 root root        103280 Dec  8 00:29 pinentry-qt
-rwxr-xr-x 1 root root         52416 Dec  8 00:29 pinentry-tty

me@b ~ % diff <(ssh a 'ls $(dirname $(which pinentry)) | grep pinentry') <(ls $(dirname $(which pinentry)) | grep pinentry)

Meus arquivos gpg.conf são os mesmos (comentários modulares e linhas em branco):

me@b ~ % diff <(ssh a "egrep -v '^#|^$' ~/.gnupg/gpg.conf") <(egrep -v '^#|^$' ~/.gnupg/gpg.conf)  

O conteúdo das minhas pastas ~/.gnupg parece não diferir de forma significativa

me@b ~ % diff <(ssh a ls -R ~/.gnupg) <(ls -R ~/.gnupg)
2c2
< S.gpg-agent
---
> crls.d
8a9
> S.gpg-agent
9a11,13
> 
> /home/me/.gnupg/crls.d:
> DIR.txt

Nenhum dos arquivos gpg-agent.conf :

me@b ~ % ls ~/.gnupg/gpg-agent.conf
ls: cannot access '/home/me/.gnupg/gpg-agent.conf': No such file or directory
me@b ~ % ssh a ls ~/.gnupg/gpg-agent.conf
ls: cannot access '/home/me/.gnupg/gpg-agent.conf': No such file or directory

Ambos têm pinentry-curses instalado:

me@b ~ % pacman -Ql pinentry | grep -i pinentry-curses
pinentry /usr/bin/pinentry-curses
me@b ~ % ssh a 'pacman -Ql pinentry | grep -i pinentry-curses'
pinentry /usr/bin/pinentry-curses

Meu ambiente parece ser mais ou menos o mesmo:

me@b ~ % env | egrep -i 'ssh|gpg|pgp|pinentry'
SSH_AGENT_PID=519
SSH_AUTH_SOCK=/tmp/ssh-yC9qsRh9Uf2c/agent.518
me@b ~ % ssh a "env | egrep -i 'ssh|gpg|pgp|pinentry'"
SSH_CLIENT=192.168.1.10 54816 22
SSH_CONNECTION=192.168.1.10 54816 192.168.1.2 22

E o gpg-agent s em ambos os hosts é invocado com os mesmos argumentos:

me@b ~ % cat /proc/$(pgrep gpg-agent)/cmdline
gpg-agent--homedir/home/me/.gnupg--use-standard-socket--daemon%
me@b ~ % ssh a 'cat /proc/$(pgrep gpg-agent)/cmdline'
gpg-agent--homedir/home/me/.gnupg--use-standard-socket--daemon%
    
por Huckle 06.05.2016 / 08:43

1 resposta

1

O GnuPG usa uma implementação pinentry conectável e configurável, geralmente por meio de links simbólicos em /usr/bin/pinentry ou soluções similares.

No Debian e seus derivados enviando o sistema update-alternative , você pode exibir qual deles é o setup em execução

update-alternatives --display pinentry

e altere-o por meio de

update-alternatives --config pinentry

Se você "bagunçou" manualmente, veja onde pinentry aponta para:

ln -l 'which pinentry'

(talvez seja necessário resolver recursivamente os links simbólicos).

    
por 06.05.2016 / 09:47