你如何防止 GPG 请求 PinEntry?

How do you keep GPG from asking for PinEntry?

我是这样从 python 呼叫 GPG 的。您会认为 --batch--no-tty 会阻止它在 KDE 中弹出打开 PinEntry 对话框。我错过了什么?

subprocess.Popen(['gpg', '--list-packets', '--batch', '--no-tty'],...

这取决于您使用的 GnuPG 版本。

  • GnuPG 1:使用--no-use-agent 防止 GnuPG 询问代理(这会导致打开 pin 输入对话框)
  • GnuPG 2: 没有办法阻止代理被询问。但是(至少从 GnuPG 2.1 开始),您可以使用 gpg-preset-passphrase 来确保 gpg-agent 已经知道您的密码并且不会要求它。

    至少在 运行 Debian 系统(可能还有衍生版)上,它隐藏在 /usr/lib/gnupg2/gpg-preset-passphras.