55

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

我的个人 GitHub 用户帐户是我希望与 Jenkins 合作的每个项目的合作者,因此我在其中生成了一个 SSH 密钥/var/lib/jenkins/.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

我还尝试按照此处所述设置 SSH 配置文件,但无济于事。

任何人都可以解释一下吗?谢谢

编辑

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

4

4 回答 4

65

看起来github.comjenkins 尝试连接的主机未在 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
于 2013-03-09T19:27:43.223 回答
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)。也许你错过了一些角色?

于 2013-03-09T19:26:15.343 回答
4

根据这篇文章,您可以尝试以下命令:

   ssh-add -l

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

   ssh-add /var/lib/jenkins/.ssh/id_rsa_project
于 2013-03-09T19:34:04.727 回答
1

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

于 2014-04-15T05:24:51.990 回答