从远程站点使用本地 gpg-agent 时的混合输入

Kus*_*nda 5 ssh tty gpg gpg-agent pinentry

我正在gpg-agent我的 Mac 上启动一个本地extra-socket选项。然后我使用 SSH 连接到远程站点,将远程S.gpg-agent套接字转发到本地S.gpg-agent.extra套接字。这有效:

ssh -R /remotehome/.gnupg/S.gpg-agent:/localhome/.gnupg/S.gpg-agent.extra remotesystem
Run Code Online (Sandbox Code Playgroud)

当我想在远程机器上签名时,pinentry本地会弹出对话框并要求输入密码,这就是它应该工作的方式。但是,当我开始输入密码时,某些按键显然会进入pinentry(它们显示为*),而某些按键最终会出现在与pinentry进程在同一 tty 上运行的 shell中。

     ??????????????????????????????????????????????????????????????????
     ? 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>       ?
     ??????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

按下Return有机会将损坏的密码发送到gpg,或者发送任何未进入pinentry外壳的按键:

/bin/ksh: tie: not found

如何从 tty 中pinentry获取所有密钥?

本地机器是运行 GnuPG 2.1.14(编译自pkgsrc)的 Mac 。远程站点是具有相同 GnuPG 版本的 Linux 机器或具有 GnuPG 版本 2.1.15(没有区别)的 OpenBSD 机器。该extra-socket选项是我的gpg-agent.conf. 环境变量GPG_TTY设置正确,在gpg-connect-agent updatestartuptty /bye本地运行会移动pinentry启动的tty ,但有同样的问题。

gpg-connect-agent updatestartuptty /bye在远程机器上做会导致

$ gpg-connect-agent updatestartuptty /bye gpg-connect-agent: connection to agent is in restricted mode ERR 67109115 Forbidden <GPG Agent>

......这是我有点期望应该发生的事情。

从 curses 接口更改为 tty 接口 forpinentry没有区别。这是pinentry我仅有的两个接口。我不运行 X11。


更新:本地系统运行 OpenBSD 6.3 (GnuPG 2.2.9) 而远程系统是一些 Ubuntu 系统 (GnuPG 2.1.11),更糟糕的是没有按键进入pinentry,所有内容都被 shell 读取。