我有一个 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