gpg-agent 在 pinentry 上失败,并显示“命令 get_passphrase 失败:文件结束”

gpg-agent 在 pinentry 上失败,并显示“命令 get_passphrase 失败:文件结束”

我正在尝试在 Linux 上将 Enigmail 与 Thunderbird 结合使用。GPG 本身已设置好,密钥已导入,我已经可以使用 kgpg 的密钥管理功能(包括密钥签名)。

但是邮件加密仍然失败,因为 gpg-agent 似乎挂在密码条目上。

根据 Enigmail 控制台,它恢复为不使用 gpg-agent(就像 kgpg 那样),但再次失败,因为 gpg 不允许在批处理模式下输入密码,而 Enigmail 使用的是批处理模式。

error - signature verification failed

gpg command line and output:
gpg: /usr/bin/gpg --charset utf-8 --display-charset utf-8 --batch --no-tty --status-fd 2 --decrypt --use-agent
gpg: problem with the agent - disabling agent use
gpg: can't query passphrase in batch mode
gpg: Invalid passphrase; please try again ...

当在命令行上重复 Enigmail 发送的命令时,我从 gpg 收到更详细的错误消息:

usr/bin/gpg --charset utf-8 --display-charset utf-8 --batch --no-tty --status-fd 2 --decrypt --use-agent test.txt
[GNUPG:] ENC_TO ...
[GNUPG:] USERID_HINT ...
[GNUPG:] NEED_PASSPHRASE 058D6157A587CB0E 7CE559F6FF6E7567 1 0
gpg-agent[12712]: handler 0x7f6d725bf6c0 for fd 6 started
gpg-agent[12712]: starting a new PIN Entry
gpg-agent[12712]: command get_passphrase failed: End of file
gpg: problem with the agent - disabling agent use
gpg: can't query passphrase in batch mode
[GNUPG:] MISSING_PASSPHRASE
gpg-agent[12712]: handler 0x7f6d725bf6c0 for fd 6 terminated
[GNUPG:] BAD_PASSPHRASE 058D6157A587CB0E
gpg: Invalid passphrase; please try again ...

我已经尝试使用 gpg2 代替 gpg,清除并重新安装 gpg-agent,pinentry-program "/usr/bin/pinentry-qt4"在 gpg-agent.conf 中指定(也使用其他变体pinentry-X11),在 gpg.conf 中删除use-agent以及 enigmail 选项(gpg: can't query passphrase in batch mode立即给出)。

我尝试从命令行启动 pinentry,但我不知道其命令的语法。

我在网上只发现了针对 Mac 的错误报告,这些问题大多通过安装其元包的较新版本得到解决。

更新:再次切换到 gpg2、停止 gpg-agent 并--no-batch在 enigmail 上添加自定义命令选项后,我能够加密邮件。似乎没有 gpg-agent,工作pinentry(-qt4)正常。查看 gpg-agents 源代码,我只能假设它在查询密码缓存时存在问题。但 gpg-agent 的缓存架构对我来说似乎并不简单。

相关内容