为整个用户会话缓存 GnuPG 凭据

big*_*ose 91 authentication cache gnupg

GnuPG 可以gpg-agent缓存对私钥的访问。如何在整个用户会话中保持该缓存处于活动状态

当我解锁 的密钥时gpg-agent,它只会在有限的时间内保持缓存状态。使用 SSH 的代理,我输入一次密码短语,它会在整个会话中保持缓存状态。我希望从gpg-agent.

因此,ssh-agent不受缓存寿命有限的影响。但是gpg-agent限制了缓存生命周期,至少在默认情况下是这样。我怎样才能消除缓存时间的限制gpg-agent

Jen*_*rat 124

高达 GnuPG 2

用户配置(in ~/.gnupg/gpg-agent.conf)只能定义默认和最大缓存持续时间;它不能被禁用。

default-cache-ttl选项设置最后一次 GnuPG 活动后的超时(以秒为单位)(因此如果您使用它,它会重置),该maximum-cache-ttl选项设置它在输入密码后缓存的时间跨度(以秒为单位)。默认值为 600 秒(10 分钟)default-cache-ttl和 7200 秒(2 小时)maximum-cache-ttl

将它设置为一年左右——比如说,34560000 秒(400 天)——你应该没问题:

default-cache-ttl 34560000
maximum-cache-ttl 34560000
Run Code Online (Sandbox Code Playgroud)

但是要使此更改生效,您需要通过重新启动 gpg-agent 来结束会话。

如果你想限制你的会话长度,你需要在注销时终止守护进程。这在操作系统之间是非常不同的,所以我指的是另一个包含不同系统提示的问题/答案。

您也可以gpg-agent在登录期间重新启动,但这不会将缓存时间限制为会话长度,而是用户登录。自行决定这是否是您的问题。

GnuPG 2.1 及以上

在 GnuPG 2.1 及更高版本中,该maximum-cache-ttl选项被重命名为max-cache-ttl没有进一步更改。

  • 至少在 GnuPG 2.1 中,`default-cache-ttl` 的默认值是 600 秒(10 分钟),而不是两个小时。 (5认同)
  • 请注意,在最新版本(至少是 gnupg 2.1)中,`maximum-cache-ttl` 选项不存在。要查看正确的选项,请参阅官方文档:https://www.gnupg.org/documentation/manuals/gnupg/Agent-Options.html#Agent-Options (2认同)
  • 即使我的设置设置为上述示例,我的 GPG4Win 每 10 分钟也会询问一次,原因是什么?`最大缓存 ttl 34560000` (2认同)

Cub*_*anX 23

对于 Windows

您需要编辑的文件应该放在: ~\.gnupg\

如果您在 PowerShell 窗口中运行它,它将打开: C:\Users\<UserName>\.gnupg

只需将gpg-agent.conf文件放入您喜欢的任何值即可。

您可以通过运行来验证它:

  1. gpgconf.exe --reload gpg-agent
  2. gpgconf.exe --list-options gpg-agent

您也可以使用这种衬垫: Set-Content -Path ~\.gnupg\gpg-agent.conf -Value "default-cache-ttl 86400$([System.Environment]::NewLine)max-cache-ttl 86400"

旧版本的 GPG

在旧版本中,该文件位于: $env:AppData\gnupg( C:\Users\<UserName>\AppData\Roaming\gnupg)

所以如果你找不到它,~\.gnupg\gpg-agent.conf看看那里。

  • 非常感谢。就我而言,我必须将这个文件移动到它`~/.gnupg/gpg-agent.conf` 之后它才起作用。我在“AppData”中没有 GnuPG 文件夹,可能会帮助其他人。 (2认同)

Sup*_*000 15

确保gpg-connect-agent reloadagent /bye在更改配置后重新加载您的 gpg 代理。

  • 它更像是一条评论,但当我写这个答案时我无法写这些评论。此外,无论您如何更改配置,都需要重新加载代理,否则不会发生任何变化。 (2认同)