gpg 代理转发:设备的 ioctl 不合适
gpg-agent forwarding: inappropriate ioctl for device
我正在尝试设置 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
导出 public 密钥
gpg --export -a mickey > mickey.gpg
签署测试数据
echo "test" | gpg2 --encrypt -r mickey > out.gpg
发送 public 密钥和签名数据
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
在远程机器上
导入 public 密钥
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 程序似乎有一些问题。在 google.
中找不到对我有用的东西
UPD
试图将 pinentry-program /usr/bin/pinentry-tty
添加到 gpg-agent.conf,新错误:
gpg: public key decryption failed: Invalid IPC response
gpg: decryption failed: No secret key
当 GPG 混淆从哪里读取输入时,就会发生这种情况。只需将其配置为从 tty(连接到标准输入的终端)查找输入即可修复它:
export GPG_TTY=$(tty)
当您在 LXC 容器内时, 不起作用。相反,将其添加到 ~/.gnupg/gpg.conf
:
use-agent
pinentry-mode loopback
然后将其添加到 ~/.gnupg/gpg-agent.conf
allow-loopback-pinentry
然后使用 echo RELOADAGENT | gpg-connect-agent
重新启动代理。
(source)
我正在尝试设置 gpg-agent 转发以便通过 ssh 使用 pass (https://www.passwordstore.org)。
本地和远程主机上的 gpg 版本 2.2.9,按照说明安装: https://gist.github.com/vt0r/a2f8c0bcb1400131ff51
在本地机器上
$HOME/.gnupg/gpg-agent.confextra-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 -R /run/user/1002/gnupg/S.gpg-agent:/home/mickey/.gnupg/S.gpg-agent.remote -o "StreamLocalBindUnlink=yes" REMOTE_HOST
在远程机器上
导入 public 密钥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 程序似乎有一些问题。在 google.
中找不到对我有用的东西UPD
试图将 pinentry-program /usr/bin/pinentry-tty
添加到 gpg-agent.conf,新错误:
gpg: public key decryption failed: Invalid IPC response
gpg: decryption failed: No secret key
当 GPG 混淆从哪里读取输入时,就会发生这种情况。只需将其配置为从 tty(连接到标准输入的终端)查找输入即可修复它:
export GPG_TTY=$(tty)
~/.gnupg/gpg.conf
:
use-agent
pinentry-mode loopback
然后将其添加到 ~/.gnupg/gpg-agent.conf
allow-loopback-pinentry
然后使用 echo RELOADAGENT | gpg-connect-agent
重新启动代理。
(source)