我确实用 git 签署了提交,这是一个大问题,我无法从 CLI 以外的任何地方输入 gpg 密钥密码。例如,如果我将在 vscode 中提交,它将失败。所以我想出了一个想法,只需从 CLI 输入密码,并将其缓存一段时间。
我在这里使用鱼壳,所以这里有一个配置:
set -x GPG_TTY (tty)
eval (gpg-agent --daemon --allow-preset-passphrase --default-cache-ttl 43200)
Run Code Online (Sandbox Code Playgroud)
据我了解,我需要启用为代理预设密码。那么接下来呢?
我试图预设一个这样的键,但它失败了:
$ echo mypassphrase | /usr/lib/gnupg2/gpg-preset-passphrase -c E2AB66331DA5CA780B7B1FA5D4BF11DA1E39EDFF
gpg-preset-passphrase: caching passphrase failed: Not supported
Run Code Online (Sandbox Code Playgroud)
我已经用谷歌搜索了所有我能做的,但没有人在任何地方回答这个问题。有类似的东西会很好ssh-add,你只需添加一个私钥,然后输入密码,想知道为什么 gpg-agent 没有采用这种漂亮的设计。
好像解决了。需要添加一些东西~/.gnupg/gpg-agent.conf:
default-cache-ttl 46000
pinentry-program /usr/bin/pinentry-gtk-2
allow-preset-passphrase
Run Code Online (Sandbox Code Playgroud)
重新加载 gpg-agent
gpg-connect-agent reloadagent /bye
Run Code Online (Sandbox Code Playgroud)