【发布时间】:2022-10-21 22:04:53
【问题描述】:
我正在尝试使用 gitlab CI/CD 在推送特定分支后自动部署我的代码(在我的情况下为“暂存”分支)
推送“暂存”分支后,我在 gitlab UI 的作业部分看到以下错误:
Running with gitlab-runner 15.0.0 (xxxxxx)
on deploy xxxxxx
Preparing the "ssh" executor
00:36
Using SSH executor...
ERROR: Preparation failed: ssh command Connect() error: ssh Dial() error: ssh: handshake failed: knownhosts: key is unknown
我可以从我的 VM 中看到 gitlab,并且 gitlab-runner 之前注册成功。
我还创建了 ssh 密钥并将其添加到 gitlab-runner 安装步骤中。
【问题讨论】:
-
Dial()部分表明这是使用 Go 的 ssh 实现。 “已知主机”的东西就是VonC said。命令行 ssh 可以被告知“首次使用时信任”,这实际上是通常的默认设置,因此如果您连接到gitlab.com第一次, ssh 将读取来自gitlab.com回答者的数据并将其保存在您的.ssh/known_hosts文件中。没有但是,“首次使用时信任”,您必须预加载正确的主机密钥。 -
然而,对于通常的 Go ssh
Dial()函数,主机密钥由HostKeyCallback函数处理(参见 theClientConfigdocumentation 和 theHostKeyCallbackdocumentation)。 gitlab-ci-runner 使用什么,我不知道。
标签: ssh gitlab ssh-keys gitlab-runner