无需运行 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 的建议,但没有成功,在谷歌上搜索后我发现了这个
这部分解决了我的问题:
最后,允许其他人在 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 密钥。运行此命令后,它终于提示我输入密码