GPG - 以非交互方式更改密码

Nic*_*ars 6 encryption gnupg keychain

大多数其他 GPG 命令允许您使用 --batch 模式,但在尝试编辑密码短语时似乎并非如此。

你必须跑 gpg --edit-key user

这会打开一个交互式 GPG 提示。

这在我的情况下不起作用,因为我需要能够在没有命令行交互的情况下更改密码。

我发现的最接近的东西是

gpg --batch --passphrase-fd 0 --status-fd 2 --command-fd 0 --edit-key

但这只是在我输入现有密码后给我一个无效命令。

任何建议都非常感谢。

小智 7

我刚刚在编写密钥生成脚本时遇到了这个问题并提出了解决方案!

有几点需要注意:

  1. 很多人指出--batch因为--passphrase*需要它。在这种情况下,我们将使用STDIN(由 指定--command-fd 0),因此希望传递原始输入而不是干扰 GnuPG 函数。
  2. 虽然--status-fd 2对于调试很有用,但不是必需的。也就是说,包括它使我得出这样的见解:--change-passphrase要求两个且只有两个条目。
  3. 设置--pinentry-mode loopback以避免提示询问您的密码。

解决方案是将原始密码和新密码通过管道传输(或重定向)到STDINGnuPG 可以处理它们的位置。虽然我最初的代码使用了,(echo ..;echo ..)|gpg ..但最好使用here-document

# Using GnuPG to change PGP key passphrase non-interactively
gpg --command-fd 0 --pinentry-mode loopback \
    --change-passphrase ${KEYID} <<END
${OLD_PASS}
${NEW_PASS}
END
Run Code Online (Sandbox Code Playgroud)

只需设置变量就可以了。享受!