![如何在脚本中生成 gpg 密钥而不让 gpg-agent 运行?](https://linux22.com/image/176098/%E5%A6%82%E4%BD%95%E5%9C%A8%E8%84%9A%E6%9C%AC%E4%B8%AD%E7%94%9F%E6%88%90%20gpg%20%E5%AF%86%E9%92%A5%E8%80%8C%E4%B8%8D%E8%AE%A9%20gpg-agent%20%E8%BF%90%E8%A1%8C%EF%BC%9F.png)
最新版本在生成密钥时gpg
启动持久用户进程 ( )。gpg-agent
即使命令终止后,该进程仍保持运行。我想改变这种行为。
目前,我正在使用unshare
PID 命名空间来隔离和终止任何gpg
仍在运行的内容。不幸的是,这种方法需要提升权限,而这些权限可能并不总是可用(root 和对 pid/mount 命名空间的访问)。
有没有一种方法可以让脚本“干净地”生成 gpg 密钥gpg
而不使用
- 让进程继续运行,或者
- 需要提升权限?
为了完整起见,以下大致说明了我当前的设置:
sudo unshare -fp --mount-proc sh -c 'gpg --homedir /tmp/TEMP_DIR --generate-key --batch; kill -9 -1' <<EOF
Key-Type: DSA
Key-Length: 768
Name-Real: TEMPKEY
Name-Comment: TEMPKEY
Name-Email: noreply@localhost
Expire-Date: 0
%no-protection
EOF
答案1
一种可能性是在不再需要代理时停止它:
gpgconf --kill gpg-agent
由于您使用的是自定义主目录,因此您需要设置GNUPGHOME
或指定--homedir
:
GNUPGHOME=/tmp/TEMP_DIR gpgconf --kill gpg-agent
如果要停止所有 GnuPG 相关进程,请指定all
而不是gpg-agent
。