在Jenkins for Git中pipe理SSH密钥

我试图让jenkins与GitHub托pipe的存储库(使用jenkinsGit插件)运行。 该存储库有多个git子模块,所以我不确定我想要尝试和pipe理多个部署密钥。

我的个人GitHub用户帐户是我希望与Jenkins合作的每个项目的协作者,所以我在/var/lib/jenkins/.ssh生成了一个SSH密钥,并将其添加到我的个人GitHub帐户中。

但是,当我尝试将库URL添加到我的Jenkins项目configuration时,我得到:

 Failed to connect to repository : Command "git ls-remote -h git@github.com:***/***.git HEAD" returned status code 128: stdout: stderr: Host key verification failed. fatal: The remote end hung up unexpectedly 

同样,当我安排构build时,我会得到:

 stderr: Host key verification failed. fatal: The remote end hung up unexpectedly 

我也尝试设置一个SSHconfiguration文件,如这里概述,但无济于事。

任何人都可以摆脱任何光? 谢谢

编辑

我应该补充说我正在运行CentOS 5.8

它看起来像jenkins试图连接到的github.com主机不在Jenkins用户的$HOME/.ssh/known_hosts下面列出。 Jenkins运行在大多数发行版上,因为用户jenkins ,因此有自己的.ssh目录来存储公钥和known_hosts的列表。

我能想到解决这个问题的最简单的解决scheme是:

 # Login as the jenkins user and specify shell explicity, # since the default shell is /bin/false for most # jenkins installations. sudo su jenkins -s /bin/bash cd SOME_TMP_DIR # git clone YOUR_GITHUB_URL # Allow adding the SSH host key to your known_hosts # Exit from su exit 

你有没有尝试login作为jenkins用户?

尝试这个:

 sudo -i -u jenkins #For RedHat you might have to do 'su' instead. git clone git@github.com:your/repo.git 

通常情况下,如果主机没有被添加或授权,你会看到失败(因此我总是手动login为第一次连接到github / bitbucket的hudson / jenkins),但是你所包含的链接应该修复这个问题。

如果上述不起作用,请尝试重新复制密钥。 确保它的pub key(即id_rsa.pub)。 也许你错过了一些人物?

根据这篇文章 ,你可以尝试下面的命令:

  ssh-add -l 

如果你的钥匙不在列表中,那么

  ssh-add /var/lib/jenkins/.ssh/id_rsa_project 

这对我有用,如果你有configuration和/Jenkins/.ssh/中的私钥文件,你需要chown (更改所有者)这两个文件,然后重新启动 jenkins,以便jenkins实例读取这两个文件。