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
,或发送任何未进入pinentry
shell 的按键:
/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) 时,情况甚至更糟不按键进入pinentry
shell 并读取所有内容。