我正在运行Fedora22。我正在尝试设置GnuPG,以使用位于Yubikey Neo上的PGP身份验证子项对SSH连接进行身份验证。
我有一个启动gpg-agent的systemd单元,如下所示:
/usr/bin/gpg-agent --homedir=%h/.gnupg --daemon --use-standard-socket
并且我在配置中启用了SSH支持:
enable-ssh-support
pinentry-program /usr/bin/pinentry-gtk
设置的其他部分包括将我的密钥的keygrip添加到~/.gnupg/sshcontrol
文件,将我的公共密钥添加到远程主机以及声明环境变量。
从全局看安装程序似乎可以运行的各种日志,我可以看到SSH找到了密钥,但实际上没有用它签名。如果查看来自的日志gpg-agent
,则可以看到它无法启动pinentry
程序,因此,不要求输入PIN码:
2015-07-22 23:23:28 gpg-agent[6758] DBG: error calling pinentry: Ioctl() inappropriate for a device <Pinentry>
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_8 -> BYE
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_7 -> CAN
2015-07-22 23:23:28 gpg-agent[6758] DBG: chan_7 <- ERR 100663573 The IPC call was canceled <SCD>
2015-07-22 23:23:28 gpg-agent[6758] smartcard signing failed: Ioctl() inappropriate for a device
2015-07-22 23:23:28 gpg-agent[6758] ssh sign request failed: Ioctl() inappropriate for a device <Pinentry>
我们在这里看到的是,当与SSH结合使用时,在调用pinentry时某些ioctl调用会失败。但是,如果我运行以下命令:
$ echo "Test" | gpg2 -s
PIN窗口将弹出,并且一切正常。
您能帮助我了解此设置和SSH发生什么情况吗?
我已经在GPG网站本身上找到了答案。代理无法在哪个屏幕上显示“ Pinentry”窗口。我只需要在.*shrc
文件中放入以下内容:
echo "UPDATESTARTUPTTY" | gpg-connect-agent > /dev/null 2>&1
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다