3

简洁版本

我正在使用别名来连接我的远程 Git 存储库。它可以工作,但是当我将这样的存储库添加到 Jenkins 时,它无法访问存储库并显示错误:

无法连接到存储库:命令“git -c core.askpass=true ls-remote -h git@github.com-foo:myaccount/myrepository.git HEAD”返回状态码 128:stdout:stderr:ssh:无法解析主机名 github.com-foo:名称或服务未知致命:无法从远程存储库读取。

请确保您具有正确的访问权限并且存储库存在。


详细的问题描述

为了commit/push编码为不同的用户,我使用别名:

C:\Users\myusername\.ssh\config

...

#github.com-foo account
Host github.com-foo
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_foo

#github.com-bar account
Host github.com-bar
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_bar

...

然后代替

git clone git@github.com:myaccount/myrepository.git

我只是使用

git clone git@github.com-foo:myaccount/myrepository.git

.ssh目录可作为共享文件夹从我的本地 VM 访问,因此也可以在 VM 上使用我的凭据。

一切正常。

现在,我在 VM 上安装了 Jenkins,并希望配置与存储在 GitHub 上的远程存储库的连接。我做了什么:

  1. 证件:Jenkins -> Credentials -> [link] Global credentials (unrestricted) -> [radio button] Enter directly -> [textarea] Key -> added -> [button] Save

  2. Git 插件:Jenkins -> Configuration -> [section] Git plugin-- 电子邮件和姓名设置:

在此处输入图像描述

  1. 项目 Git 设置:[project] -> Configuration -> [section] Source Code Management -> [section] Git-- 存储库 URL 和凭据:

在此处输入图像描述

如屏幕截图所示,连接失败。

为什么它不工作以及如何让它工作,以便使用别名连接 Jenkins 中的远程 Git 存储库?

4

1 回答 1

2

您需要提供jenkins配置ssh。文件

C:\Users\myusername\.ssh\config

适用于您的用户,但您也需要运行该jenkins用户的别名jenkins。找到jenkins用户的主目录并在那里添加文件.ssh\config

然后您可能还需要在其主目录中复制/创建不同的ssh密钥jenkins,因为jenkins用户无法访问您的密钥。

在此之后,应设置文件评估权限。它可以很容易地完成chown -R jenkins /var/lib/jenkins/.ssh

在全局 Jenkins 设置中,私钥可以设置为“来自 Jenkins master ~/.ssh”:

在此处输入图像描述

于 2016-04-06T12:19:29.710 回答