Estou começando um local gpg-agent no meu Mac, com a opção extra-socket . Em seguida, conecto-me a um site remoto usando SSH, encaminhando o soquete S.gpg-agent remoto para o soquete S.gpg-agent.extra local. Isso funciona:
ssh -R /remotehome/.gnupg/S.gpg-agent:/localhome/.gnupg/S.gpg-agent.extra remotesystem
Quando quero assinar algo na máquina remota, a caixa de diálogo pinentry aparece localmente e pede a senha, que é a maneira como deve funcionar. No entanto, quando eu começo a digitar minha senha, alguns dos pressionamentos de tecla obviamente vão para pinentry (eles são exibidos como * ), enquanto alguns pressionamentos de tecla terminam no shell que é executado no mesmo tty que o processo pinentry .
┌────────────────────────────────────────────────────────────────┐
│ Note: Request from a remote site. │
│ │
│ Please enter the passphrase to unlock the OpenPGP secret key: │
│ "My name <my.email@address>" │
│ 4096-bit RSA key, ID MYKEYIDXXX0000YYY, │
│ created 2015-06-17 (main key ID MYMAINKEYIDXXX0000YYY). │
│ │
│ │
│ Passphrase: t*i*e_____________________________________________ │
│ │
│ <OK> <Cancel> │
└────────────────────────────────────────────────────────────────┘
Pressionar Return tem a chance de enviar a senha desconfigurada para gpg , ou enviar qualquer tecla pressionada que não tenha entrado em pinentry no shell:
/bin/ksh: tie: not found
Como faço para obter pinentry para pegar todas as chaves do tty?
A máquina local é um Mac rodando o GnuPG 2.1.14 (compilado a partir de pkgsrc ). O site remoto é uma máquina Linux com a mesma versão do GnuPG ou uma máquina OpenBSD com a versão 2.1.15 do GnuPG (sem diferença). A opção extra-socket é a única opção ativada no meu gpg-agent.conf . A variável de ambiente GPG_TTY está definida corretamente e a execução de gpg-connect-agent updatestartuptty /bye localmente moverá o tty no qual pinentry é inicializado, mas com o mesmo problema.
Fazer gpg-connect-agent updatestartuptty /bye na máquina remota resulta em
$ gpg-connect-agent updatestartuptty /bye
gpg-connect-agent: connection to agent is in restricted mode
ERR 67109115 Forbidden <GPG Agent>
... é o que eu espero que aconteça.
A mudança da interface curses para a interface tty para pinentry não faz diferença. Essas são as únicas duas interfaces pinentry disponíveis para mim. Eu não corro o X11.
Atualização: Com o sistema local rodando o OpenBSD 6.3 (GnuPG 2.2.9) e o remoto sendo um sistema Ubuntu (GnuPG 2.1.11), é ainda pior com o pressionamento de teclas no para pinentry e tudo sendo lido pelo shell.