40

我正在尝试设置 gpg-agent 转发以便通过 ssh使用 pass ( https://www.passwordstore.org )。

本地和远程主机上的 gpg 版本 2.2.9,按说明安装: https ://gist.github.com/vt0r/a2f8c0bcb1400131ff51

在本地机器上

$HOME/.gnupg/gpg-agent.conf

extra-socket /home/mickey/.gnupg/S.gpg-agent.remote

重新加载代理

echo RELOADAGENT | gpg-connect-agent

导出公钥

gpg --export -a mickey > mickey.gpg

签署测试数据

echo "test" | gpg2 --encrypt -r mickey > out.gpg

发送公钥和签名数据

scp *.gpg REMOTE_HOST:

使用反向转发创建 ssh 会话

ssh -R /run/user/1002/gnupg/S.gpg-agent:/home/mickey/.gnupg/S.gpg-agent.remote -o "StreamLocalBindUnlink=yes" REMOTE_HOST

在远程机器上

导入公钥

gpg --import mickey.gpg

最终相信这把钥匙

gpg --edit-key mickey

trust 5 quit

尝试解密

gpg --decrypt -v out.gpg

输出
gpg: public key is FED6243A3325C554
gpg: connection to agent is in restricted mode
gpg: using subkey FED6243A3325C554 instead of primary key 9E2ED69A02554504
gpg: using subkey FED6243A3325C554 instead of primary key 9E2ED69A02554504
gpg: encrypted with 2048-bit RSA key, ID FED6243A3325C554, created 2018-07-23
      "mickey"
gpg: public key decryption failed: Inappropriate ioctl for device
gpg: decryption failed: No secret key

因此,代理套接字转发正在工作,似乎 pinentry 程序存在一些问题。在谷歌中找不到任何对我有用的东西。

UPD

试图添加pinentry-program /usr/bin/pinentry-tty到 gpg-agent.conf,新错误:

gpg: public key decryption failed: Invalid IPC response
gpg: decryption failed: No secret key
4

2 回答 2

74

当 GPG 对从哪里读取输入感到困惑时,就会发生这种情况。只需将其配置为从 tty(连接到标准输入的终端)查找输入即可修复它:

export GPG_TTY=$(tty)
于 2019-03-06T21:48:27.180 回答
24

当您在 LXC 容器中时,此方法不起作用。相反,将其添加到~/.gnupg/gpg.conf

use-agent 
pinentry-mode loopback

然后将此添加到~/.gnupg/gpg-agent.conf

allow-loopback-pinentry

然后使用 重新启动代理echo RELOADAGENT | gpg-connect-agent

来源

于 2019-12-04T06:20:29.763 回答