尝试将 Git 存储库添加到 Jenkins 时的访问问题

Posted

技术标签:

【中文标题】尝试将 Git 存储库添加到 Jenkins 时的访问问题【英文标题】:Access issues when trying to add Git repository to Jenkins 【发布时间】:2020-08-01 01:00:17 【问题描述】:

我正在 Jenkins 中创建一个管道。当我尝试添加存储库 URL 时,出现以下错误:

无法连接到存储库:命令“git.exe ls-remote -h -- git@bitbucket.org:somename/myproject.git HEAD" 返回状态码 128:stdout:stderr:主机密钥验证失败。致命的:不能 从远程存储库中读取。

请确保您拥有正确的访问权限和存储库 存在。

屏幕截图显示我在哪里添加它:

我在这里更改了 repo 名称作为示例,但我正在访问的 repo 是有效且公开的,任何人都可以访问。

谷歌搜索不断回到 ssh 的问题。我不确定它是否与我有关。在我正在执行此操作的机器上,我可以处理该存储库(通过终端或 ide 拉/推),因为我已经为我的 bitbucket 设置了 ssh 密钥并且它工作正常。

我应该为 Jenkins 单独设置另一组 ssh 密钥吗?我很困惑。请问我可以得到一些帮助吗?谢谢。

编辑:

如果我添加一个 github 存储库,请注意没有问题,例如如下: https://github.com/bradtraversy/vanilla-parcel-boilerplate.git

【问题讨论】:

如果这是一个公共 repo(允许匿名读取),请使用 http(s) url 而不是 ssh。不能匿名使用 ssh。如果您仍然需要/想要使用 ssh,则必须 1) 在 /home/jenkins/.ssh/known_hosts 中添加目标服务器主机密钥(手动或通过从命令行与 jenkins 用户启动第一个 ssh 连接)2) 配置私有jenkins 中用于该连接的密钥凭据。 @Zeitounator 谢谢。它确实适用于 https。对于您的第 1 点,手动添加我已经用来连接到 bitbucket 的当前 ssh 密钥值?另外 .ssh 是我自己添加的吗?因为即使我可以看到其他隐藏文件夹,它也不存在。 这能回答你的问题吗? Git error: "Host Key Verification Failed" when connecting to remote repository ***.com/… 【参考方案1】:

根据您的评论,这适用于 https 而无需任何身份验证,但您仍需要通过 ssh 连接以用于其他目的和用途。为了能够连接,您必须:

注册远程主机密钥以识别为 Jenkins 用户系统帐户的已知主机 在 Jenkins GUI 中将私钥注册为凭据,以便在远程目标上进行身份验证

接受主机密钥作为已知主机

最简单的方法是使用 ssh 连接到您的 Jenkins 服务器并成为jenkins 系统用户。从那里使用ssh git@bitbucket.org 启动到目标服务器的 ssh 连接。你会得到如下提示

The authenticity of host 'bitbucket.org (2406:da00:ff00::22c5:2ef4)' can't be established.
RSA key fingerprint is SHA256:zzXQOXSRBEiUtuE8AikJYKwbHaxvSc0ojez9YXaGp1A.
Are you sure you want to continue connecting (yes/no)?

回答“是”将主机密钥存储在您 known_hosts 文件中。您可以取消其余的连接操作。

注册一个私钥。

您需要将您的私有 ssh 密钥注册为 Jenkins 中的凭证。请参阅documentation。完成后,凭证将显示在存储库 URL 下的下拉列表中。选择它以将其用于连接。

【讨论】:

以上是关于尝试将 Git 存储库添加到 Jenkins 时的访问问题的主要内容,如果未能解决你的问题,请参考以下文章

如何将丢失的 gradle-wrapper.jar 添加回 Git 存储库以供 Jenkins 完成其工作

将多个 git 存储库签出到同一个 Jenkins 工作区

使用 Jenkins 管道将多个 git 存储库签出到同一个作业中

jenkins 无法连接到远程位桶存储库

如何将外部文件添加到 Jenkins 作业?

Jenkins无法连接到gitea存储库