SSH 代理:`sign_and_send_pubkey:ECDSA-SK 签名失败...来自代理:代理拒绝操作`(第一次除外)

SSH 代理:`sign_and_send_pubkey:ECDSA-SK 签名失败...来自代理:代理拒绝操作`(第一次除外)

我有一个 ecdsa-sk 密钥对,是我生成的,并添加到我的 github 帐户(绑定到 yubikey)。如果我尝试使用该密钥进行任何连接,例如git push,我会得到:

sign_and_send_pubkey: signing failed for ECDSA-SK "[...]/.ssh/id_ecdsa_sk" from agent: agent refused operation

我尝试过的命令组合均不起作用ssh-add(删除密钥、重新添加等)。 ssh-add -l将显示密钥存在,但我仍然收到上述错误。

唯一有效的办法就是杀死ssh-agent然后立即地跑步:

ssh-add -K <ecdsa keyfile>

如果我这么做,那么git push就会成功——一次。如果我首先对代理执行任何其他操作,添加其他密钥等,git push则会失败(出现上述错误),如果我立即git push第二次运行,它将失败(并且之后会持续失败,直到我ssh-agent再次终止)。

不幸的是,我用的是 Mac(Monterey,M1 芯片)。我只在使用 esdsa-sk 密钥时遇到这个问题。我的常规 rsa 密钥工作正常。我是不是漏掉了什么或者做错了什么?我知道 ecdsa-sk 支持相对较新;这可能是一个错误吗?

答案1

使用 Homebrew 的 OpenSSH

$ brew install openssh

安装后,你必须将 OpenSSH 文件夹放在 RC 文件中 PATH 的开头,以覆盖 PATH 中的文件夹,如下所示

$ export PATH=$(brew --prefix openssh)/bin:$PATH

完成上述操作并获取文件后,rc你应该能够生成密钥

在 macOS Monterey 上测试过OpenSSH_9.0p1, OpenSSL 1.1.1q 5 Jul 2022

相关内容