在执行时,git pull
我收到标题中的错误agent key RSA SHA256:xxxxxxxxxx returned incorrect signature type
。否则,密钥工作正常,但我有兴趣修复此问题并了解为什么会发生这种情况。
我已经直接从我的环境路径中删除了 system32 OpenSSH,现在在生成密钥时或使用 git 的 SSH 服务时只有 OpenSSH-Win64。
当前 git 配置:
sshCommand = 'C:\\Program Files\\OpenSSH-Win64\\ssh.exe'
我使用此命令生成了密钥:ssh-keygen.exe -t rsa -b 4096 -C "[email protected]"
我只是不确定这里发生了什么。我已经浏览过这里提出的所有其他我认为可能相关的问题。如果您需要我运行任何命令以获取更多信息或日志等,请直接询问,我会尽力满足您的要求。
答案1
对于 SSH 中的大多数公钥算法,都有一个用于签名的固定哈希算法。例如,对于 Ed25519,它是 SHA-512。RSA 密钥(即ssh-rsa
)传统上使用 SHA-1,但这不再是一种安全的选择。
最近,添加了对使用 RSA 的 SHA-2(SHA-256 和 SHA-512)签名的支持,并且在 SSH 协议和代理协议中添加了其他组件来支持这些签名。
如果您的连接协商具有 SHA-2 签名的 RSA 密钥,但您使用的 OpenSSH 代理返回 SHA-1 签名(或者,在某些我从未见过的奇怪情况下,返回具有其他 SHA-2 算法的签名),那么您将收到此消息。 通常服务器将允许您继续连接,但您使用的算法较弱,因此您需要修复它。
如果您使用的程序与 OpenSSH 版本的ssh-agent
进程不同,则需要将其升级到了解 SHA-2 RSA 签名的固定版本。或者,您可以切换到使用 OpenSSH 的ssh-agent
。
作为最后一个选项,您可以使用不同类型的密钥。假设您使用的服务器支持 Ed25519 密钥,那么它们是一个强大且安全的选项,不会出现此问题。您可以使用相同的命令生成这样的密钥,但使用-t ed25519
而不是-t rsa
。