选项--batch
仅限gpg
于生成具有单个子密钥的密钥。对于任何更复杂的事情,我尝试使用--command-fd
和--status-fd
。我面临的问题是我无法找到绕过要求我输入密码的弹出窗口的方法。这是一个简单的测试用例:
#!/bin/bash
gpg2 --homedir ./gpg-test --passphrase "apassword" --status-fd 1 --expert --full-gen-key --command-file <(cat <<-EOF
8
S
Q
1024
0
My Name
[email protected]
mycomment
EOF
)
尽管进行了--passphrase
切换,但当脚本到达 之前的位置时EOF
,不会识别切换,而是弹出一个窗口。我尝试在 之前添加密码EOF
,但失败了。当我尝试 (页面 (gpg2 v.2.1.11)--pinentry-mode loopback
中记录的 )时man
,我收到错误:
gpg: setting pinentry mode 'loopback' failed: Not supported
[GNUPG:] ERROR set_pinentry_mode 67108924
gpg: agent_genkey failed: Not supported
Key generation failed: Not supported
答案1
我将保留这个问题,因为可能还有其他人有类似的困惑。事实证明,我尝试的方法在 v.2.2.4 中有效。因此,尽管有文档说明,但它在 2.1.11 中不受支持。
除此之外,截至 2020 年,进行无人值守密钥生成的正确且最简单的方法是使用--quick-generate-key 和 --quick-add-key。我尝试使用的方法(使用--command-fd
/ --status-fd
)仅适用于更复杂的任务。例如,钥匙上有很多种签名并且--quick-sign-key
只提供最简单的。对于更复杂的情况,--edit-key
可能需要,在这种情况下,我的上述方法是合适的。