在Jenkins for Git中管理SSH密钥

时间:2013-03-09 19:11:01

标签: git ssh jenkins continuous-integration

我正在尝试让Jenkins运行并使用Gi​​tHub托管的存储库(使用Jenkins Git插件)。存储库有多个git子模块,所以我不确定我是否想尝试管理多个部署密钥。

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

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

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

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

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

我也尝试按照here概述设置SSH配置文件,但无济于事。

任何人都可以光明吗?感谢

修改

我应该补充一点,我正在运行CentOS 5.8

4 个答案:

答案 0 :(得分:62)

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

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

# 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

答案 1 :(得分:6)

您是否曾尝试以jenkins用户身份登录?

试试这个:

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

如果主机没有被添加或授权,通常会看到失败(因此我总是手动登录为hudson / jenkins,以便第一次连接到github / bitbucket)但是你所包含的那个链接可能会修复它。

如果上述方法无效,请尝试重新输入密钥。确保它的pub键(即id_rsa.pub)。也许你错过了一些角色?

答案 2 :(得分:4)

根据此article,您可以尝试以下命令:

   ssh-add -l

如果您的密钥不在列表中,那么

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

答案 3 :(得分:1)

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