在Jenkins for Git中管理SSH密钥
我正在尝试使用GitHub托管的存储库(使用Jenkins Git插件)启动并运行Jenkins。存储库有多个git子模块,因此我不确定是否要尝试和管理多个部署密钥 我的个人GitHub用户帐户是我希望与Jenkins合作的每个项目的合作者,因此我在在Jenkins for Git中管理SSH密钥,git,ssh,jenkins,continuous-integration,Git,Ssh,Jenkins,Continuous Integration,我正在尝试使用GitHub托管的存储库(使用Jenkins Git插件)启动并运行Jenkins。存储库有多个git子模块,因此我不确定是否要尝试和管理多个部署密钥 我的个人GitHub用户帐户是我希望与Jenkins合作的每个项目的合作者,因此我在/var/lib/Jenkins/.SSH中生成了一个SSH密钥,并将其添加到我的个人GitHub帐户中 但是,当我尝试将存储库URL添加到Jenkins项目配置时,我得到: Failed to connect to repository : Com
/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
我还尝试过按照概述设置SSH配置文件,但没有效果
有人能解释一下吗?谢谢
编辑
我应该补充一点,我正在运行CentOS 5.8您是否尝试以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的第一个连接),您经常会看到失败,但您包含的链接可能会修复这一问题
如果上述方法无效,请尝试重新复制密钥。确保它是发布密钥(即id_rsa.pub)。可能您遗漏了一些字符?看起来jenkins尝试连接的
github.com
主机未列在jenkins用户的$HOME/.ssh/known_hosts
下。Jenkins作为用户Jenkins
在大多数发行版上运行,因此有自己的.ssh
目录来存储公钥列表和已知的主机
我能想到的解决此问题的最简单方法是:
# 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
据此,您可以尝试以下命令:
ssh-add -l
如果您的密钥不在列表中,则
ssh-add /var/lib/jenkins/.ssh/id_rsa_project
如果您在/Jenkins/.ssh/中有配置文件和私钥文件,这对我很有用。您需要chown(更改所有者)这两个文件,然后重新启动Jenkins,以便Jenkins实例读取这两个文件。@Adam-您从未提到过已知的_主机您只是在谈论id\u rsa.pub
公钥:DI做了。(如果未添加或授权主机,通常会出现故障)。我只是没有明确提到这个文件。不管怎样,在我格式化答案时,你抢先提到了它:谢谢你的两个回复;)我想这可能与已知的主机有关,但我无法以jenkins的身份登录。我设法为用户设置了密码,并得到了密码提示,但当我提供密码提示时,用户会话没有切换。有没有办法手动将github添加为已知的\u主机?我想我知道这个问题。运行以下命令:usermod-s'/bin/bash'jenkins
将shell设置为/bin/bash
,而不是为jenkins用户设置的默认值/bin/false
。然后您应该能够su
。