Entrada misturada ao usar o gpg-agent local do site remoto

3

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.

    
por Kusalananda 21.11.2016 / 23:13

0 respostas