gpg-agent 代替 ssh-agent

gpg-agent 代替 ssh-agent

我有一个 Yubikey 4,我想使用存储在其中的 GPG 密钥来对 SSH 服务器进行身份验证。
我想首先使用 GitHub。我已经将我的 GPG 身份验证密钥添加到 GitHub。

我的问题是,当我 ssh 时,我的代理不使用此密钥。我已经通过尝试连接到我的 VPS 进行了检查,ssh -v但它跳过了我的 GPG 密钥。我的 Yubikey 已插入并gpg2 --card-status显示所有详细信息。我能够很好地签名和解密以及使用 Yubikey 的其他功能。

ssh 输出

debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/wilhelm/.ssh/id_rsa
debug1: Trying private key: /home/wilhelm/.ssh/id_dsa
debug1: Trying private key: /home/wilhelm/.ssh/id_ecdsa
debug1: Trying private key: /home/wilhelm/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).

我已禁用 gnome 密码管理器。

我看过将 SSH 和 Git 连接到 gpg-agent并遵循了建议,但似乎不起作用。

╰─ ssh-add -l
Could not open a connection to your authentication agent.

╰─ ps aux | grep gpg-agent
wilhelm  26079  0.0  0.0  20268   980 ?        Ss   20:57   0:00 gpg-agent --daemon --enable-ssh-support --sh
wilhelm  31559  0.0  0.0  12724  2184 pts/1    S+   22:49   0:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn gpg-agent

答案1

sshgpg-agent如果您不给它这样做的方式,则无法打开与您的连接。

当您启动gpg-agentwith--enable-ssh-support选项时,它会打印出需要在 shell 中可用的环境变量,您将在其中使用ssh.获得它们的可能性很少:

  • 停止gpg-agent并在您正在使用的 shell 中再次启动它ssh(这应该是测试它的最简单方法):

    eval $(gpg-agent --daemon --enable-ssh-support --sh)
    
  • 找到认证socket的位置并SSH_AUTH_SOCK手动设置环境变量

稍后,当您知道它可以工作时,您应该根据手册页设置代理启动gpg-agent(1),所以可能要~/.xsession让它自动启动。

相关内容