在Jenkins for Git中管理SSH密钥

Jam*_*mes 53 git ssh continuous-integration jenkins

我正在尝试让Jenkins运行并使用Gi​​tHub托管存储库(使用Jenkins Git插件).存储库有多个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
Run Code Online (Sandbox Code Playgroud)

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

stderr: Host key verification failed.
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

我也尝试过设置这里概述的SSH配置文件,但无济于事.

谁能摆脱任何光明?谢谢

编辑

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

Tux*_*ude 63

看起来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
Run Code Online (Sandbox Code Playgroud)

  • 我想我知道这个问题.运行此命令:`usermod -s'/ bin/bash'jenkins`将shell设置为`/ bin/bash`,而不是为jenkins用户设置的默认`/ bin/false`.然后你应该能够'su`. (4认同)

Ada*_*ent 6

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

试试这个:

sudo -i -u jenkins #For RedHat you might have to do 'su' instead.
git clone git@github.com:your/repo.git
Run Code Online (Sandbox Code Playgroud)

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

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