我正在尝试在没有任何键盘交互的情况下在 bash 中为密钥环生成子密钥。我尝试了几种方法来解决此处提到的问题
https://unix.stackexchange.com/questions/60213/gpg-asks-for-password-even-with-passphrase
以下命令要求输入密码,但即使没有使用取消按钮输入密码也会生成子密钥:
gpg2 --passphrase-file <(echo $pass_poem) --batch --quick-addkey $keyring_hash_id rsa1024 sign 1y
与此相同的行为:
echo $pass_poem | gpg2 --batch --no-tty --yes --passphrase-fd 0 --quick-addkey $keyring_hash_id rsa1024 sign 1y
我使用 Ubuntu 和 gpg 2.1.15 以及 libgcrypt 1.7.2-beta
有人明白为什么会出现这样的行为吗?
非常感谢
答案1
解决方案接近
即使指定了 --passphrase,GPG2 仍要求输入密码
解释可以在这里找到:
https://wiki.archlinux.org/....
将以下行添加到 ~/.gnupg/gpg-agent.conf 文件即可:
pinentry-mode loopback
但不建议这样做,因为它可能会破坏其他用途。
这是一个解决方案:
echo $pass_poem | gpg2 --pinentry-mode loopback --batch --no-tty --yes --passphrase-fd 0 --quick-addkey $keyring_hash_id rsa1024 sign 1y