首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pinentry在gpg-agent和SSH中失败。

Pinentry在gpg-agent和SSH中失败。
EN

Unix & Linux用户
提问于 2015-07-22 21:47:07
回答 2查看 15.8K关注 0票数 13

我在查费多拉22号。我正在尝试设置GnuPG,让我的SSH连接使用位于我的Yubikey Neo上的PGP身份验证子密钥进行身份验证。

我有一个系统单元启动gpg-代理如下:

代码语言:javascript
复制
/usr/bin/gpg-agent --homedir=%h/.gnupg --daemon --use-standard-socket

我在配置中启用了SSH支持:

代码语言:javascript
复制
enable-ssh-support
pinentry-program /usr/bin/pinentry-gtk

设置的其他部分包括将我的密钥的锁匙柄添加到~/.gnupg/sshcontrol文件、将我的公用钥匙添加到远程主机和声明环境变量

在全局范围内,查看设置似乎有效的各种日志,我可以看到SSH找到了密钥,但实际上没有与它进行签名。如果我查看来自gpg-agent的日志,我可以看到它未能启动pinentry程序,因此没有请求使用PIN代码:

代码语言:javascript
复制
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结合使用时,一些ioctl调用在调用pinentry时失败。但是,如果我运行以下命令:

代码语言:javascript
复制
$ echo "Test" | gpg2 -s

PIN窗口弹出了,一切正常。

你能帮我理解一下这个设置和SSH是怎么回事吗?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2015-07-26 09:01:19

我在GPG网站上找到了答案。代理未能找到在哪个屏幕上显示Pinentry窗口。我只需将以下内容放在我的.*shrc文件中:

代码语言:javascript
复制
echo "UPDATESTARTUPTTY" | gpg-connect-agent > /dev/null 2>&1
票数 15
EN

Unix & Linux用户

发布于 2016-05-10 06:01:07

好吧,这对我有用:

代码语言:javascript
复制
export GPG_TTY=`tty`

将其添加到您的.bashrc中,或者在使用gpg之前启动它。

票数 19
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/217737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档