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.