代理密钥RSA SHA256:...返回了不正确的签名类型

7

我正在尝试在GitHub上使用CircleCI来构建一个Go项目,并使用Go项目的默认模板。

以下是默认的.circleci/config.yml文件的外观:

version: 2
jobs:
  build:
    docker:
      - image: circleci/golang:1.12.7-buster
    working_directory: /go/src/github.com/Permaweb/Host
    steps:
      - checkout
      - run: go get -t -u -v ./...
      - run: go test -v ./...

当作业运行时,我收到一个与代码本身完全无关的错误。
agent key RSA SHA256:L1iUIhjfKejEONe0TFU3TaWkNwE2O0xWF/09K7P8WnA returned incorrect signature type
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=origin/<branch> develop
这个错误发生在 CircleCI 上执行 git pull 命令时,使用的分支与 master 不同。
我该如何解决?

我遇到了这个问题,因为我在Windows电脑上使用PowerShell。我的紧急解决方法是使用WSL和SSH;然而,我发现有关更好解决方案的讨论/问题,例如升级Windows上的SSH客户端。请参见Win32-OpenSSH问题讨论 - Josh Desmond
1个回答

14

这里有两个问题,它们是相互独立的。

"agent key returned incorrect signature type"警告意味着正在使用的SSH代理返回了无效数据。

当您使用RSA SSH密钥时,可以使用多种哈希算法之一进行签名:SHA-1、SHA-256或SHA-512。最初,只支持SHA-1,因此每次使用RSA密钥都意味着您在使用SHA-1。然而,SHA-1很弱,因此添加了更强的哈希算法。

此消息意味着SSH连接使用不同签名算法的RSA密钥,即SHA-256或SHA-512。但是,当要求SSH代理为该连接进行签名时,它提供了一个SHA-1签名,这与代理协议不符。

该消息本质上不是致命的,尽管远程方可能会选择拒绝您的连接,如果它不支持SHA-1签名。

您看到的另一条消息来自Git,意味着您正在尝试执行git pull命令,但该分支没有设置远程。在这种情况下,这是因为您正在对现有存储库使用go get命令,因为该命令将尝试更新现有存储库。

如果你只想安装依赖,运行go build通常会自动为您完成,因此没有必要专门运行go get。如果你需要更复杂的操作,那么你应该使用Git本身来处理,因为go get不适用于复杂情况。

4
值得一提的是,停止出现“代理密钥返回了不正确的签名类型”信息的方法是将代理升级到支持除SHA-1以外的签名算法的版本。请参阅https://superuser.com/a/1499705/287985。 - Joao Costa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接