当将我的 gpg-agent 转发到远程服务器时,我可以看到列出的我的私钥。即使我在本地解锁了密钥,我仍然需要在远程计算机上解锁它。
但是,当我尝试在远程计算机上解锁时,它会向我的本地计算机发送 pinentry。使用时pinentry-tty
或pinentry-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-tty
or pinentry-curses
。
另外,是否可以在本地“解锁”我的 gpg 私钥并将其转发到远程,而不必在远程服务器上解锁?
编辑:
似乎 4 年前就有人问过同样的问题了!
不幸的是,没有答案。
答案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
同一终端窗口上的限制引起的。