如何在使用gpgme解密文件时绕过pinentry(密码短语屏幕)

时间:2011-12-29 17:27:43

标签: ruby gnupg gpgme

我正在尝试从服务器解密文件,我在那里拥有该服务器所需的公钥。密钥环有密码保护,因此当我尝试解密文件时,它会要求我输入密码。

当我们尝试解密文件时,是否可以通过传递密码来绕过该密码。

我正在使用gpg-agent密码短语缓存600秒的默认时间,由于某种原因我无法设置max-cache-ttl(它不适用于我,我不会&#39} ;知道y)并且仅适用于该会话。

现在我要缓存我使用gpg-preset-passphrase的密码。我在.gnupg / gpg-agent.conf中将其设置为gpg-preset-passphrase --preset hex。我不知道我在这里缺少什么。

有人可以告诉我这个

中缺少的东西

由于

1 个答案:

答案 0 :(得分:3)

我无法绕过密码或pinentry屏幕,但我使用gpg-agentdefault-cache-ttl选项来设置缓存时间。因此,从第二次尝试开始,pinentry将检索缓存的密码,并将重置defaul-cache-ttl上的计时器。

还有一个名为max-cache-ttl的选项,即使在成功检索缓存密码并重置default-cache-ttl之后,此选项也不会更改其计时器并在设置超时后使缓存的密码短语失效。

例如:如果我将它们都设置为10小时(即36000秒),如果我在5小时后调用解密,则默认将重置其计时器,现在我们有10个小时。但最大值将在最初的10小时后到期,因此在10小时后删除缓存的密码。

我发现的另一个问题是gpg-agent的会话问题。即,如果我打开一个新会话并尝试解密,则不会发生gpg-agent无法用于此会话的错误。我编写了一些shell脚本并将其放在bashrc上,以便在新会话启动时立即启动