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

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

我尝试使用 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

但是,它并没有要求我输入密码,而只是进行签名过程。这是为什么呢?

答案1

GnuPG 用于gpg-agent缓存您的密码。它需要密码才能签名(这是一个私钥操作),因此会打印消息,但不需要询问您,因为密码仍然被缓存。可以配置缓存是否有效以及有效时间。

gpg-代理

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

配置

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

default-cache-ttl 600

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

答案2

因为有一个 gpg 代理会将您的密码缓存一段时间,所以如果您反复使用 gpg,则只需在第一次输入密码,然后它将被记住并在后续运行时自动使用。

相关内容