转发 gpg-agent 时,GPG pinentry 在密码输入期间未接收按键操作

转发 gpg-agent 时,GPG pinentry 在密码输入期间未接收按键操作

当将我的 gpg-agent 转发到远程服务器时,我可以看到列出的我的私钥。即使我在本地解锁了密钥,我仍然需要在远程计算机上解锁它。

但是,当我尝试在远程计算机上解锁时,它会向我的本地计算机发送 pinentry。使用时pinentry-ttypinentry-curses无法输入密码。

它有一些奇怪的行为,它会接收一些击键,有些甚至显示为纯文本。

pinentry --version
pinentry-curses (pinentry) 1.1.0

当地的

gpg --version
gpg (GnuPG) 2.2.27

偏僻的

gpg --version
gpg (GnuPG) 2.2.12

这些是我的本地配置文件:

gpg-agent.conf

extra-socket /run/users/1000/gnupg/S.gpg-agent.extra
pinentry-program /usr/bin/pinentry-curses

ssh.config

Host remote
    HostName <ip-address>
    User <username>
    RemoteForward /run/users/1000/gnupg/S.gpg-agent /run/users/1000/gnupg/S.gpg-agent.extra

StreamLocalBindUnlink另外,在我添加到的远程服务器上/etc/ssh/sshd_config

要“强制”pinentry 在本地某个终端上显示,我必须使用以下命令

gpg-connect-agent updatestartuptty /bye

一旦我尝试在远程服务器上签署某些内容,我的本地终端上就会出现以下屏幕

┌────────────────────────────────────────────────────────────────┐
│ Note: Request from a remote site.                              │
│                                                                │
│ Please enter the passphrase to unlock the OpenPGP secret key:  │
│ "username <email>"                                             │
│ 256-bit EDDSA key, ID 1234567890,                              │
│ created 2021-01-01.                                            │
│                                                                │
│                                                                │
│ Passphrase: __________________________________________________ │
│                                                                │
│         <OK>                                    <Cancel>       │
└────────────────────────────────────────────────────────────────┘

当我尝试输入密码时,我收到以下信息:

┌────────────────────────────────────────────────────────────────┐
│ Note: Request from a remote site.                              │
│                                                                │
│ Please enter the passphrase to unlock the OpenPGP secret key:  │
│ "username <email>"                                             │
│ 256-bit EDDSA key, ID 1234567890,                              │
│ created 2021-01-01.                                            │
│                                                                │
│                                                                │
│ Passphrase: *elo w**wd    ____________________________________ │
│                                                                │
│         <OK>                                    <Cancel>       │
└────────────────────────────────────────────────────────────────┘

当我关闭 pinentry 时,我可以在命令行上看到部分纯文本

> elo wd

当我使用时同样的行为pinentry-tty

在我的本地计算机上,我运行 Arch Linux,但在 Macos 上也存在相同的行为。对于我的终端模拟器,我分别使用simple terminal和。iterm2

远程计算机运行 Debian Buster。

我想继续使用pinentry-ttyor pinentry-curses

另外,是否可以在本地“解锁”我的 gpg 私钥并将其转发到远程,而不必在远程服务器上解锁?

编辑:

似乎 4 年前就有人问过同样的问题了!

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

不幸的是,没有答案。

答案1

我在 MacOS 中也有同样的问题。

$ gpg --version
gpg (GnuPG/MacGPG2) 2.2.34

$ pinentry --version
pinentry-curses (pinentry) 1.2.0

在同一个 iTerm 窗口中。跑步:

$ killall gpg-agent && gpg-agent --daemon --pinentry-program /usr/local/bin/pinentry

然后运行快速测试:

$ echo "test" | gpg --clearsign

该问题是由pinentry同一终端窗口上的限制引起的。

相关内容