如何从 CLI 输入 gnupg-agent 密钥密码?

问题描述 投票:0回答:2

我确实使用 git 签署提交,但一个大问题是我无法从除 CLI 之外的任何地方输入 gpg 密钥密码。例如,如果我在 vscode 中提交,它将失败。所以我想出了一个想法,只需从 CLI 输入密码,并将其缓存一段时间。

我在这里使用鱼壳,所以这是一个配置:

set -x GPG_TTY (tty)
eval (gpg-agent --daemon --allow-preset-passphrase  --default-cache-ttl 43200)

据我了解,我需要启用为代理预设密码。那么接下来怎么办?

我尝试过像这样预设一个键,但失败了:

$ echo mypassphrase | /usr/lib/gnupg2/gpg-preset-passphrase -c E2AB66331DA5CA780B7B1FA5D4BF11DA1E39EDFF

gpg-preset-passphrase: caching passphrase failed: Not supported

我已经用谷歌搜索了一切,但没有人在任何地方回答这个问题。如果有像

ssh-add
这样的东西就好了,你只需添加一个私钥,然后输入密码,想知道为什么 gpg-agent 没有采用这个好的设计。

gnupg
2个回答
9
投票

看来已经解决了。需要添加几件事到

~/.gnupg/gpg-agent.conf

default-cache-ttl 46000
pinentry-program /usr/bin/pinentry-gtk-2
allow-preset-passphrase

重新加载 gpg-agent

gpg-connect-agent reloadagent /bye

0
投票

为了将来的参考,在我的 Ubuntu 发行版中,我安装了

pinentry
(在
/usr/bin/
内),这样我就可以这样使用它

~/.gnupg/gpg-agent.conf:

pinentry-program /usr/bin/pinentry

另一种选择是

pinentry-tty
,您可以使用
brew
apt

安装它
pinentry-program /home/linuxbrew/.linuxbrew/bin/pinentry-tty

两者都要求在终端中输入密码,但

pinentry
有一个看起来像网络中的模式的TUI,而
pinentry-tty
直接要求密码作为命令的输出,就像使用
sudo
一样。

© www.soinside.com 2019 - 2024. All rights reserved.