Yubikey ssh 身份验证失败,显示“ECDSA-SK 签名失败”

Yubikey ssh 身份验证失败,显示“ECDSA-SK 签名失败”

我有一个 Yubikey(Yubico 的安全密钥 NFC),我正尝试在 Linux 机器上设置它,以在可发现密钥模式下进行 SSH 身份验证。我已关注本教程并使用

ssh-keygen -t ecdsa-sk -O resident -O application=ssh:YourTextHere -O verify-required

之后,公钥被复制到目标服务器,我可以正确登录

ssh -i /root/.ssh/YourTextHere server 

但是,当我尝试在代理上连接加载密钥而不使用证书时,出现以下错误:

sign_and_send_pubkey: signing failed for ECDSA-SK "" from agent: agent refused operation
root@opnsense: Permission denied (publickey).

我使用以下方式加载 ssh-agent

eval "$(ssh-agent -s)"

并使用以下方式添加 Yubikey 的密钥

ssh-add -K

我可以正确地看到加载的密钥

ssh-add -L

这一切都指出了代理的签名问题,但我不确定如何继续。我已经在目标服务器中启用了所有签名算法。

我正在尝试从 Debian 12、openssh 版本 OpenSSH_9.2p1 进行连接。目标机器是 freebsd(opnsense 防火墙),openssh 版本 OpenSSH_9.3p2 我遗漏了什么吗?

编辑找到解决方案,请参阅@Ramhound 的回复。我不得不做一个

apt-get install ssh-askpass

然后

which ssh-askpass 

将显示二进制文件的路径。之后我只需要执行

eval "$(ssh-agent -s; SSH_ASKPASS=/usr/bin/ssh-askpass)"

并提示您输入密码和状态。连接成功后。

答案1

verify-required需要一种方法ssh-agent实际提示验证(无论是“触摸”请求还是 PIN 输入提示)。代理协议不包含任何将提示转发回调用程序的方法,因此ssh-agent需要直接启动ssh-askpass提示器。

确保ssh-askpass安装了某个版本(我认为,不同的桌面有几个版本),如果需要,请设置SSH_ASKPASS=其路径以便ssh-agent可以找到它。

答案2

将其添加到您的~/.profile文件中:

if [ -S "$HOME/.gnupg/S.gpg-agent.ssh" ] ; then
        SSH_AUTH_SOCK="$HOME/.gnupg/S.gpg-agent.ssh"
        export SSH_AUTH_SOCK
        export GPG_TTY=$(tty)
        gpg-connect-agent updatestartuptty /bye
fi

相关内容