GPG 说它需要密码,但实际上不需要

UTF*_*F-8 7 signature gnupg

我尝试使用 GPG 对文件进行签名,但有些东西让我感到困惑:如果我在终端中输入(我要签名的文件称为“校验和”),它会说:

$ gpg -s checksums
You need a passphrase to unlock the secret key for
user: "[my name] <[my email prefix]@gmail.com>"
4096-bit RSA key, ID C457C71D, created 2015-01-16
Run Code Online (Sandbox Code Playgroud)

但是,它不会要求我输入密码,而只是执行签名过程。这是为什么?

Jen*_*rat 5

GnuPG 用于gpg-agent缓存您的密码。它确实需要密码短语进行签名(这是一个私钥操作)并因此打印消息,但不需要询问您,因为密码短语仍被缓存。可以配置缓存是否工作以及工作多长时间。

gpg-agent

gpg检查是否有一个正在运行gpg-agent(或者,在较新的版本中,必须启动一个)。gpg-agent确实(除其他外)在给定时间内缓存您的密码短语。

配置

这个时间跨度可以在 中配置~/.gnupg/gpg-agent.conf,在我的例子中包含一行

default-cache-ttl 600
Run Code Online (Sandbox Code Playgroud)

将缓存时间设置为十分钟(10*60 秒)。更多选项在 中描述man gpg-agent,大多数选项也可以gpg-agent.conf通过省略前导来使用--