![GPG 说需要密码,但实际上不需要](https://linux22.com/image/868448/GPG%20%E8%AF%B4%E9%9C%80%E8%A6%81%E5%AF%86%E7%A0%81%EF%BC%8C%E4%BD%86%E5%AE%9E%E9%99%85%E4%B8%8A%E4%B8%8D%E9%9C%80%E8%A6%81.png)
我尝试使用 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,则只需在第一次输入密码,然后它将被记住并在后续运行时自动使用。