Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Jenkins for Git中管理SSH密钥_Git_Ssh_Jenkins_Continuous Integration - Fatal编程技术网

在Jenkins for Git中管理SSH密钥

在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

我正在尝试使用GitHub托管的存储库(使用Jenkins Git插件)启动并运行Jenkins。存储库有多个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
我还尝试过按照概述设置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