在 GitHub 上托管的 Go 项目上使用 CircleCI 时,您可能会遇到令人困惑的错误:“代理密钥 RSA SHA256 :...返回了错误的签名类型。”这个看似不相关的错误发生在与 master 不同的分支上的 Git 拉取过程中。
签名类型不匹配
“代理密钥返回了错误的签名类型”警告表示用于连接的 SSH 代理提供了无效签名。使用 RSA SSH 密钥时,用户可以选择三种哈希算法之一:SHA-1、SHA-256 或 SHA-512。但是,该错误表明发生了不匹配。
最初,RSA SSH 密钥专门使用 SHA-1 进行签名。由于其脆弱性,更强大的哈希算法被引入。当代理根据请求生成 SHA-1 签名而不是协商的 SHA-256 或 SHA-512 时,就会出现错误,这违反了代理协议。
虽然本质上不是致命的,但该错误可能会导致连接失败如果缺乏对 SHA-1 签名的支持,则会被远程端拒绝。
Git 分支问题
随后的错误消息源于尝试 git pull 时未指定相关分支的远程位置。这种情况通常发生在现有存储库上使用 go get 时,因为它会自动尝试更新存储库。
要解决此问题,请避免使用 go get 进行依赖项安装,因为 go build 通常会无缝处理此任务。或者,对于更复杂的场景,选择 Git 本身而不是 go get。
以上是为什么 CircleCI 上的我的 Go 项目因'代理密钥返回了错误的签名类型”和 Git 分支问题而失败?的详细内容。更多信息请关注PHP中文网其他相关文章!