带有 gpg-agent 的 gpg 永远不会要求输入密码

带有 gpg-agent 的 gpg 永远不会要求输入密码

无需运行 gpg-agent,我可以输入密码来签署文件:

$ echo 123 | gpg -s

You need a passphrase to unlock the secret key for
user: "Mr. Ops <[email protected]>"
2048-bit RSA key, ID 20F31903, created 2014-03-13

gpg: gpg-agent is not available in this session
Enter passphrase:

运行良好。但我不想一直输入密码,所以我运行了 gpg-agent:

$  eval $(gpg-agent --daemon)

现在我希望系统至少提示我输入密码一次,但我从来没有输入过,并且使用 gpg 的所有操作都会失败。

$ echo 123 | gpg -s

You need a passphrase to unlock the secret key for
user: "Mr. Ops <[email protected]>"
2048-bit RSA key, ID 20F31903, created 2014-03-13

gpg: cancelled by user
gpg: no default secret key: bad passphrase
gpg: signing failed: bad passphrase

如何将密码存储在代理中?一旦我将密码存储在代理中,如何在登录会话期间将其保留在那里?(理想情况下,我永远不想再次被提示。)这是在 Ubuntu 12.04.4 上使用标准 apt-get gpg 包进行的,以防万一。

答案1

gpg-agent当不知道在哪个 TTY 上提示时就会发生这种情况,这里发生这种情况是因为您正在重定向 stdin。

您可以export GPG_TTY=$(tty)输入您的信息~/.bashrc来为每个登录 shell 设置 TTY。

文档gpg-agent有更多详细信息。

答案2

有点晚了,但这次我在远程登录我的电脑(Linux-Centos)并尝试解密 PGP 文件时遇到了这个问题。我尝试了 dave 的建议,但没有成功,在谷歌上搜索后我发现了这个

gpg:已被用户取消

这部分解决了我的问题:

最后,允许其他人在 tty 上进行 r+w 操作似乎解决了这个问题

[root@host ~]# chmod o+rw $(tty)

希望这可以帮助别人。

BR。

答案3

我不确定这是否能解决问题,但我也遇到过类似的问题。登录服务器,尝试运行 gpg 来解密包,它说我需要一个密码,无法输入该密码,gpg-agent 正在运行,修改 tty 不起作用,导出 GPG_TTY 不起作用。

我的问题是,我以 root 身份通过 ssh 进入服务器,然后su <gpg-user account>。gpg-agent 没有访问我的 ssh 终端所需的权限,因此运行 gpg 解密失败并出现整个You need a passphrase to unlock the secret key for user: gpg: cancelled by user gpg: decryption failed: No secret key错误。

解决方案是ssh使用我加密过的 gpg-user 帐户进入服务器。这样,ssh 终端就归 gpg-user 帐户所有,当我运行 gpg 来解密某些数据时,它可以执行一些奇怪的操作,清除屏幕并提示输入密码。

让我困惑了很久,然后这个页面让我稍微思考了一下这个问题 - 所以谢谢你的提问和其他答案 - 你们真的帮助了我!

答案4

chmod o+rw $(tty) 帮我解决了这个问题。我试图在通过会话管理器登录时在 ec2 实例上创建 pgp 密钥。运行此命令后,它终于提示我输入密码

相关内容