Jenkins:无法连接到存储库

我试图在github回购上连接jenkins。

当我指定Repo URL时,jenkins返回以下错误消息:

无法连接到存储库:命令“git ls-remote -h git@github.com:adolfosrs / jenkins-test.git HEAD”返回状态码128:stdout:stderr:主机密钥验证失败。 致命:无法从远程存储库读取。 请确保您拥有正确的访问权限并存在存储库。

当使用HTTPS时:// Url jenkins返回:

无法连接到存储库:无法连接到https://github.com/adolfosrs/jenkins-test.git(status = 407)

我可以在jenkins运行的同一台机器上成功克隆repo,并且还运行git ls-remote -h git@github.com:adolfosrs/jenkins-test.git HEAD命令。 所以我在github上有了正确的SSH。


问题是,我用root用户创建了ssh文件。 所以文件所有者是root。

解决方案只是将所有权更改为jenkins用户。

chown jenkins id_rsa.pub 
chown jenkins id_rsa

这是一个非常棘手的问题 - 即使您熟悉https与证书的工作方式(如果您看到我的解决方法,OTOH看起来很合逻辑:)

如果您想通过shell中的http连接到GIT存储库,则应确保在您的计算机上存储(作为文件)公共证书。 然后,您将该证书添加到您的GIT配置中

git config [--global] http.sslCAInfo“certificate”

(将“证书”替换为PEM文件的完整路径/名称:)

对于shell的使用,你也可以提供一个'.netrc'来为http服务器登录提供证书。 完成之后,您将能够执行'git clone https:// ...',而无需任何交互式配置凭证。

但是,对于Jenkins服务,它有点不同......在这里,詹金斯进程需要知道服务器证书 - 并且它不使用shell设置(在全局git配置文件的意义上.gitconfig '):P

我需要做的是在Jenkins的启动选项中添加另一个参数。

... -Djavax.net.ssl.trustStore =“keystore”...

(用下面解释的完整路径/名称替换“keystore”:)

现在将持有证书的Web服务器的密钥库文件复制到某个路径(我知道这是一个肮脏的黑客攻击,并不完全安全),并使用'-Djavax.net.ssl.trustStore ='参数来引用它。

现在,Jenkins服务将接受来自通过https提供存储库的Web服务器的证书。 像配置GIT存储库URL

https://yourserver.com/your-repositorypath

请注意,您仍需要登录jenkins-user主文件夹下的'.netrc'! 因此,我所描述的被认为是一种解决方法......直到提供了正确运行的证书助手插件。 恕我直言,这个插件(在当前版本1.9.4)是越野车。

我永远无法得到证书帮手从詹金斯工作,无论我尝试什么:(最好,我看到一些关于不可访问的临时凭证助手文件的错误,等等。你可以看到很多关于它在詹金斯报告的错误JIRA,但没有修复。

所以如果有人让它工作好,请分享知识...


PS:在以下版本中使用Jenkins插件:

Credentials插件1.9.4,GIT客户端插件1.6.1,Jenkins GIT插件2.0.1


检查下面的设置。 这总是对我有用。

詹金斯配置:

1)检查是否适当地指定了git可执行文件

2)提供SSH存储库链接git @ blahblah

3)在凭证下>>选择用户名和验证密钥(转到您的服务器,生成SSH密钥ssh-keygen ...将密钥复制到JENKINS_HOME /,ssh)您应该能够从Jenkins连接到您的GIT存储库

链接地址: http://www.djcxy.com/p/92229.html

上一篇: Jenkins: Failed to connect to repository

下一篇: SSH asking for password at login and not passphrase