gpg-agent:gpg-agent 已在运行 - 未启动新的 gpg-agent

xpt*_*xpt 6 gnupg gpg-agent

尝试以仅输入密码一次的方式配置 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
Run Code Online (Sandbox Code Playgroud)

即,gpg-agent --daemon将启动一个 gpg-agent,但忘记它随后就启动了一个,并阻止了自己。之后尝试了很多次gpgconf --kill gpg-agent,或者

kill `pgrep gpg-agent`
Run Code Online (Sandbox Code Playgroud)

结果总是一样的。

怎么了?

$ 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
Run Code Online (Sandbox Code Playgroud)

小智 4

我有同样的问题。我认为您的代理启动有些正确,但没有设置$SSH_AUTH_SOCKssh 来查找代理。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)"
Run Code Online (Sandbox Code Playgroud)

我希望它有帮助。