代理启动参数

代理启动参数

如何gpg-agent --no-allow-external-cache --default-cache-ttl 10 --max-cache-ttl 20 在shell脚本中设置?在我发出命令后,它给出了gpg-agent[4869]: gpg-agent running and available但缓存 ttl 值没有更改。我通过gpgconf --list-options gpg-agent | grep cache并实际执行了 --decrypt 来验证它,密钥在 30 秒后仍然被缓存。

我知道网络资源建议更改文件中的这些配置~/.gnupg/gpg-agent.conf。我不确定为什么我没有该文件。即使我是 root,我也无法打开vi /root/S.gpg-agent文件。无论如何,我不喜欢更改配置文件中的这些设置。我更喜欢为不同的 --decrypt 设置不同的缓存 TTL。所以它必须从 shell 脚本发出。

# ls -al /root/.gnupg/
total 36
drwx------  3 root root 4096 Jun  2 05:51 .
drwx------ 14 root root 4096 Jun  2 14:18 ..
-rw-r--r--  1 root root   24 Jun  2 03:28 .#lk0x00005558d8861f30.gentoo_bazic.26472
-rw-r--r--  1 root root   24 Jun  2 04:16 .#lk0x0000556c15e3ef30.gentoo_bazic.7432
-rw-r--r--  1 root root   24 Jun  1 20:45 .#lk0x00005576e9d54f30.gentoo_bazic.29752
drwx------  2 root root 4096 Jun  1 02:43 private-keys-v1.d
-rw-------  1 root root   32 Jun  1 02:43 pubring.kbx
-rw-------  1 root root  600 Jun  2 05:20 random_seed
srwx------  1 root root    0 Jun  2 05:51 S.gpg-agent
srwx------  1 root root    0 Jun  2 05:51 S.gpg-agent.browser
srwx------  1 root root    0 Jun  2 05:51 S.gpg-agent.extra
srwx------  1 root root    0 Jun  2 05:51 S.gpg-agent.ssh
-rw-------  1 root root 1200 Jun  2 03:19 trustdb.gpg

PS我知道可以通过 清除缓存echo RELOADAGENT | gpg-connect-agent。但这是不太理想的。

参考

https://www.gnupg.org/documentation/manuals/gnupg/Agent-Options.html

https://www.gnu.org/software/emacs/manual/html_node/pgg/Caching-passphrase.html

答案1

代理启动参数

gpg-agent[4869]: gpg-agent running and available

我假设代理在启动后立即退出,进程 4869 的生命周期约为 1 秒。您的测试gpgconf --list-options gpg-agent可能确实连接到已经以其默认配置运行的代理。

一般而言,gpg-agent 似乎并未设计为在运行时更改其配置,至少在不清除缓存的情况下(这不是一个选项)。

配置文件

您没有该文件,~/.gnupg/gpg-agent.conf因为默认情况下不会创建它。

vi /root/S.gpg-agent可能是一个错字,本来应该是vi /root/.gnupg/S.gpg-agent。您无法编辑,S.gpg-agent因为它是套接字,而不是常规文件。

管理多个配置文件

您不想更改配置文件中的这些设置,因为您希望每个--decrypt.根据密钥的数量或用例的复杂性,您可能可以选择使用不同的 GPG 主目录。

如果您管理/root/gnupg-home-1//root/gnupg-home-2/,每个目录都可以有自己的gpg-agent.conf目录,每个目录都有不同的缓存 TTL 值。命令

  • gpg --homedir /root/gnupg-home-1/ --decrypt ...
  • gpg --homedir /root/gnupg-home-2/ --decrypt ...

将触发不同代理实例的启动,每个代理实例都有自己的配置。

测试/验证

您可以使用 验证结果(就像之前一样)gpgconf,您只需要添加--homedir参数:

  • gpgconf --homedir /root/gnupg-home-1/ --list-options gpg-agent |grep cache
  • gpgconf --homedir /root/gnupg-home-2/ --list-options gpg-agent |grep cache

访问限制

如果 root 的 umask 已不阻止访问组和其他目录,则应使用mkdir --mode=700 <directoryname>.

清理

使用后需要杀死药剂吗?

从安全角度来看,如果缓存实现正确并且配置的 TTL 相当短,则没有必要这样做。

从系统维护的角度来看,在正常运行时间可能较长的服务器上,最好在不再需要代理进程时终止它们。否则,未使用的代理进程数量可能会增加太多。

从软件状态的角度来看,删除目录并保留代理进程是不一致的。在我的测试中(gpg-agent版本2.2.35),代理进程在删除目录后自动消失。但我在手册页中找不到任何有关此内容的信息,所以我不知道为什么会发生这种情况以及这有多可靠。

根据用例以及脚本的实现方式,如果代理进程在目录被删除后仍然存在,则可能存在意外重用旧配置的风险。可以通过使用唯一的目录名称(例如使用uuidgen)来避免此类错误。

相关内容