![SSH 代理:`sign_and_send_pubkey:ECDSA-SK 签名失败...来自代理:代理拒绝操作`(第一次除外)](https://linux22.com/image/778472/SSH%20%E4%BB%A3%E7%90%86%EF%BC%9A%60sign_and_send_pubkey%EF%BC%9AECDSA-SK%20%E7%AD%BE%E5%90%8D%E5%A4%B1%E8%B4%A5...%E6%9D%A5%E8%87%AA%E4%BB%A3%E7%90%86%EF%BC%9A%E4%BB%A3%E7%90%86%E6%8B%92%E7%BB%9D%E6%93%8D%E4%BD%9C%60%EF%BC%88%E7%AC%AC%E4%B8%80%E6%AC%A1%E9%99%A4%E5%A4%96%EF%BC%89.png)
我有一个 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