![gpg-agent:gpg-agent 已在运行 - 不启动新的](https://linux22.com/image/1591822/gpg-agent%EF%BC%9Agpg-agent%20%E5%B7%B2%E5%9C%A8%E8%BF%90%E8%A1%8C%20-%20%E4%B8%8D%E5%90%AF%E5%8A%A8%E6%96%B0%E7%9A%84.png)
尝试以某种方式配置 gpg,使我只需输入一次密码,它就会在整个会话中起作用。
然而,这就是我得到的:
$ pgrep gpg-agent | wc
0 0 0
$ gpg-agent --daemon
gpg-agent: a gpg-agent is already running - not starting a new one
$ pgrep gpg-agent
26401
即,gpg-agent --daemon
将启动 gpg-agent,但忘记它随后已启动一个,并阻止自身。之后尝试多次gpgconf --kill gpg-agent
,或
kill `pgrep gpg-agent`
并且结果总是一样的。
怎么了?
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.1 LTS
Release: 18.04
Codename: bionic
# installed packages with KW of gpg:
gpg_2.2.4-1ubuntu1.2
gpg-agent_2.2.4-1ubuntu1.2
gpg-wks-client_2.2.4-1ubuntu1.2
gpg-wks-server_2.2.4-1ubuntu1.2
gpgconf_2.2.4-1ubuntu1.2
gpgsm_2.2.4-1ubuntu1.2
gpgv_2.2.4-1ubuntu1.2
答案1
我遇到了同样的问题。我认为您的代理启动得有些正确,但没有设置$SSH_AUTH_SOCK
ssh 来查找代理。gpgconf --list-dirs agent-ssh-socket
为您提供套接字的位置。根据您的操作系统,它可能是~/.gnupg/S.gpg-agent.ssh
或/run/user/6666/gnupg/S.gpg-agent.ssh
。您可以使用 进行设置SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
。
您可以将以下行添加到.bashrc
/.zshrc
以启动代理:
eval $(gpg-connect-agent --quiet /bye)
export GPG_TTY=$(tty)
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
我希望它有帮助。