Jenkins:无法连接到存储库

ado*_*srs 35 git ssh github jenkins

我正在尝试在github repo上连接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.

ado*_*srs 17

问题是我以某种方式用root用户创建了ssh文件.所以文件所有者是root.

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

chown jenkins id_rsa.pub 
chown jenkins id_rsa
Run Code Online (Sandbox Code Playgroud)

  • 我仍然得到**Permission denied(publickey).** (4认同)

Jue*_*sen 7

这是一个非常棘手的问题 - 即使你已经熟悉https中带有证书的工作方式(OTOH,如果你看到我的解决方法,它似乎很合乎逻辑:)

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

git config [--global] http.sslCAInfo"certificate"

(将"certificate"替换为PEM文件的完整路径/名称:)

对于shell的使用,您也可以提供一个'.netrc'来证明您的http-server登录凭据.完成后,您将能够执行"git clone https:// ..."而无需任何交互式配置凭据.

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

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

... -Djavax.net.ssl.trustStore ="keystore"...

(将"keystore"替换为完整的路径/名称,如下所述:)

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

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

https://yourserver.com/your-repositorypath

请注意,您仍然需要jenkins-user主文件夹下的".netrc"进行登录! 因此,我所描述的将被视为一种解决方法......直到提供正常工作的凭证帮助程序插件.恕我直言这个插件(在其当前版本1.9.4)是错误的.

无论我怎样尝试,我都无法从Jenkins那里获得凭证帮助:(最好我看到一些关于无法访问的临时凭证助手文件的错误等等.你可以在Jenkins中看到很多关于它的bug报告JIRA,但没有修复.

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


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

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


Raj*_*man 7

当我尝试将 Windows 服务器中的 jenkins 与我的私人 GIT 存储库连接时,我遇到了类似的问题。以下是Jenkins作业源码管理部分返回的错误

无法连接到存储库:命令“git.exe ls-remote -h ssh://git@my_server/repo.git HEAD”返回状态代码 128: stdout: stderr: Load key "C:\Windows\TEMP\ssh4813927591749610777. key": 无效格式 git@my_server: 权限被拒绝 (publickey)。致命:无法从远程存储库读取。

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

抛出此错误是因为 jenkins 无法从其用户目录中选择私有 ssh 密钥。我通过以下方式解决了这个问题

第1步

在詹金斯工作中,填写以下信息 Source Code Management

存储库

存储库 URL:ssh://git@my_server/repo.git
凭据:-none-

第2步

在我的设置中 jenkins 在本地系统帐户下运行,所以用户目录是C:\Windows\System32\config\systemprofile(这是这个设置中不是很明显的重要事情)。

现在使用ssh-keygen -t rsa -C "key label"通过git bashshell创建 ssh 私钥和公钥。ssh 私钥和公钥位于您登录用户目录的 .ssh 目录下。只需复制 .ssh 文件夹并将其粘贴到C:\Windows\System32\config\systemprofile

第 3 步

将您的公钥添加到您的 GIT 服务器帐户。运行 jenkins 作业,现在您应该能够通过 jenkins 的 ssh 连接到 GIT 帐户。


小智 6

我有同样的问题。我在Mac上解决此问题的方法是:

  1. 切换到jenkins用户(sudo -iu jenkins)
  2. 运行:ssh-keygen(注意-您现在正在为jenkins用户创建ssh密钥对。您应该看到类似以下内容的信息:输入要保存密钥的文件(/Users/Shared/Jenkins/.ssh/id_rsa):
  3. 持续按Enter键输入默认值,直到结束
  4. 在您的终端上运行Jenkins错误消息中显示的命令(例如:“ git ls-remote -h git@github.com:adolfosrs / jenkins-test.git HEAD”)
  5. 系统将询问您是否要继续。说是
  6. Github仓库将添加到您的known_hosts文件中:/Users/Shared/Jenkins/.ssh/
  7. 返回Jenkins门户并尝试您的Github SSH URL
  8. 它应该工作。祝好运


030*_*030 5

在我们的例子git中,必须安装在 Jenkins 服务器上。

  • 是的,刚刚为 CentOS 做了一个“sudo yum install git”,而 Jenkins 适用于 git repo。 (2认同)