让 GPG 代理永久存储密码

让 GPG 代理永久存储密码

我最近在我的 Mac 上安装了 GPG:

brew install gpg;
brew install gpg-agent;

并生成带有密码的密钥对。

我添加use-agent到我的~/.gnupg/gpg.confallow-preset-passphrase~/.gnupg/gpg-agent.conf

我使用以下方法成功解密了文件:

gpg --use-agent --output example.txt --decrypt example.gpg

这提示我输入我的私钥密码。问题是,在解密后续文件时,gpg-agent再次提示我输入此密码。

目前,我的密码是一个非常长的字符串,几乎不可能每次都输入。我希望gpg表现得像ssh-agent密码短语被安全存储并永远记住(即使在会话之间)。

我知道,如果我的笔记本电脑被包含在内,这可能会降低安全性,但这种不便可能会阻止我gpg一起使用它们。

我不确定是否:

default-cache-ttl 31536000
max-cache-ttl 31536000

是我正在寻找在重新启动之间存储的选项,遗憾的是man没有gpg-agent.

我怎样才能永远gpg记住gpg-agent我的私钥密码?

答案1

您可能没有$GPG_AGENT_INFO设置环境变量。

作为临时措施,您可以执行的操作是运行gpg-agent bash(或您选择的 shell)并重试解密。

从长远来看,这可能只需先注销然后重新登录系统,然后$GPG_AGENT_INFO再次检查回显即可解决。如果是的话,您很有可能不再需要每次都重新输入密码。

大多数 Linux 发行版都有相应的钩子,我希望 OSX 能够像用户友好的那样,满足要求,当然是gpg/gpg-agent在开始会话之前可用(安装)。

答案2

您应该像这样启动代理。

eval $(gpg-agent --daemon --write-env-file "${HOME}/.gnupg/.gpg-agent-info)"

然后在您的.bashrc文件中添加以下行:

if [ -f "${HOME}/.gnupg/.gpg-agent-info" ]; then
    . "${HOME}/.gnupg/.gpg-agent-info"
    export GPG_AGENT_INFO
fi

相关内容