gpg-agent 和 SSH:无需密钥

gpg-agent 和 SSH:无需密钥

我正在尝试通过我的 GPG 子密钥启用 SSH 身份验证,使用本教程。不过,我借用.init这个博客(代替编辑我的 Xprofile)。

但是,我收到一个非常奇怪的错误消息:


┌─[12:53:49]─[user@pc]
└──> ~ $ ssh-add -l
gpg-agent[7659]: ssh handler 0xABCD1234 for fd 5 started
gpg-agent[7659]: ssh request 1 is not supported
gpg-agent[7659]: ssh request handler for request_identities (11) started
gpg-agent[7659]: no running SCdaemon - starting it
gpg-agent[7659]: DBG: first connection to SCdaemon established
gpg-agent[7659]: no authentication key for ssh on card: Card error
gpg-agent[7659]: /home/user/.gnupg/sshcontrol:4: key '[keygrip from auth key]' skipped: No such file or directory
gpg-agent[7659]: ssh request handler for request_identities (11) ready
The agent has no identities.
gpg-agent[7659]: ssh handler 0xABCD1234 for fd 5 terminated

当然,这没有任何意义,因为我从来没有使用过智能卡,也不认为我安装了智能卡驱动程序。

此外,这些 GPG 密钥有效且已导入。上面列出的密钥也有一个身份验证子密钥。

我正在运行 GnuPG 版本 2.1.1。

有什么方法可以解决这个问题,并且(作为奖励)让我的 SSH 密钥通过 GPG 工作?


内容~/.gnupg/sshcontrol

# List of allowed ssh keys.  Only keys present in this file are used
# in the SSH protocol.  The ssh-add tool may add new entries to this

<keygrip from my auth key>

编辑:完成后set | grep SSH_AUTH_SOCK,我得到:

SSH_AUTH_SOCK=/run/user/1000/keyring-PLDuNs/ssh

但是,尝试访问cat此文件时,我收到No such device or address错误。不过,我不确定这是否相关,或者只是用户期望返回的错误。

答案1

我发现你的设置存在两个问题:

  1. 但是,我借用并使用了.init这个博客中的脚本(代替编辑我的 Xprofile)。

    该博客文章中的初始化脚本已过时(IE,适用于 2.1 之前的 GnuPG 版本。不要使用它。

  2. 编辑:完成后set | grep SSH_AUTH_SOCK,我得到:

    SSH_AUTH_SOCK=/run/user/1000/keyring-PLDuNs/ssh
    

    但是,当我尝试 cat 此文件时,我收到“无此设备或地址”错误。不过,我不确定这是否相关,或者只是用户期望返回的错误。

    您使用了错误的 SSH 身份验证套接字。

有关这些说法的来源,请参阅官方文档。如需直接修复,请参阅Jens Erat 对该过程的概述在 Unix StackExchange 上。为方便起见,复制到此处:

  1. ssh-agent通过添加enable-ssh-support来启用协议~/.gnupg/gpg-agent.conf
  2. export SSH_AUTH_SOCK=$HOME/.gnupg/S.gpg-agent.ssh;你可能想在你的~/.profile
  3. ssh-agent如果已启动则终止并重新加载gpg-agent( gpg-connect-agent reloadagent /bye)
  4. 导出并将您的公钥添加到目标服务器(ssh-add -L现在应该包含您熟悉的 OpenPGP 密钥的 SSH 公钥行)

    编者注:此步骤可以通过以下方式简化将密钥的“keygrip”值添加~/.gnupg/sshcontrol到远程服务器上,然后使用ssh-copy-id

  5. ssh像使用普通 SSH 密钥一样连接到目标服务器

相关内容