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

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

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

当我想在远程计算机上签署某些内容时,pinentry本地会弹出对话框并要求输入密码,这就是它应该工作的方式。但是,当我开始输入密码时,某些按键显然会进入pinentry(它们显示为*),而某些按键最终会进入与进程在同一 tty 上运行的 shell 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>       │
     └────────────────────────────────────────────────────────────────┘

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

/bin/ksh: tie: not found

我怎样才能pinentry抓住全部来自 tty 的密钥?

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

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 接口pinentry没有什么区别。这是pinentry我唯一可用的两个界面。我不运行X11。


更新:当本地系统运行 OpenBSD 6.3 (GnuPG 2.2.9) 且远程系统运行某些 Ubuntu 系统 (GnuPG 2.1.11) 时,情况甚至更糟按键进入pinentryshell 并读取所有内容。

相关内容