Jenkins - 无法从slave节点git克隆。 SSH密钥

时间:2012-04-17 12:06:46

标签: git ssh hudson jenkins slave

我刚刚建立了我的第一个詹金斯奴隶。我运行构建,我遇到了SSH密钥的问题。 主Jenkins服务器在用户'jenkins'下运行。我已经设置了SSH密钥,这样我就可以在没有密码的情况下从主服务器SSH到从服务器。

e.g。来自大师:

jenkins@master:~$ ssh slave
Last login: Tue Apr 17 10:30:22 2012 from masterjenkins.com
$ whoami
jenkins

这样就证明了从节点也在'jenkins'用户下运行。 (我已将jenkins @ slave的公共ssh密钥复制到远程git服务器)。我可以从奴隶手动发出git clone,但是当我从master中启动构建时,我得到了这些消息:

    ERROR: Error cloning remote repo 'origin' : Could not clone git@host:abc
hudson.plugins.git.GitException: Could not clone git@host:abc
Caused by: hudson.plugins.git.GitException: Error performing command: git clone --progress -o origin git@host:abc /var/lib/jenkins/workspace/abc_build
Command "git clone --progress -o origin git@host:abc /var/lib/jenkins/workspace/abc_build" returned status code 128: Initialized empty Git repository in /var/lib/jenkins/workspace/abc_build/.git/
Host key verification failed.
fatal: The remote end hung up unexpectedly
Caused by: hudson.plugins.git.GitException: Command "git clone --progress -o origin git@host:abc /var/lib/jenkins/workspace/abc_build" returned status code 128: Initialized empty Git repository in /var/lib/jenkins/workspace/abc_build/.git/
Host key verification failed.
fatal: The remote end hung up unexpectedly
Trying next repository
ERROR: Could not clone repository
FATAL: Could not clone

所以它仍然暗示我的SSH密钥设置不正确。 谁能告诉我需要复制哪些键?

非常感谢, 的 NS

1 个答案:

答案 0 :(得分:5)

根据克隆URL,您会看到混合了两种不同的身份验证方法。您正在尝试以用户git而不是jenkins的方式SSH到主机。通常,当您托管自己的GIT存储库并使用git @ servername:reponame进行克隆时,您会使用类似gitolite的内容。

你有没有设置像gitolite一样的东西?

尝试使用像这样的ssh'ing作为jenkins用户。

ssh git@slave 

然后看看它返回了什么。这是一个更符合您正在进行的git@host:abc的SSH。

如果您未在服务器计算机上设置任何其他内容,请将克隆网址更改为jenkins@host:pathtorepo

<强>更新

/home/git/.ssh/authorized_keys

应该有这样的条目:(这一切都在一行上)

# gitolite start
command="/home/git/bin/gl-auth-command jenkins",no
-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAt3+od84Gc9NBVrVb3MKjekHcBDwXXONnVYMNVpuRadoz/FPJTkOIxozKVPJDPI670O252giYpF59sOKqAJL0xEVUrhq8cDFuFwQsSAp0ed1kp/GRxx+pwytL58rcVJEHAy2DkD1z5HlNaZyvIxQyfLTnYfuL1Hx6Qe7dal7mXO0= keycomment
# gitolite end

在gitolite中为jenkins添加存储库权限: (您可能必须在托管您的存储库的同一台计算机上克隆,就像gitolite用户一样)

git clone git@host:gitolite-admin 
cd gitolite-admin
cd conf
vi gitolite.conf

现在找到'abc'的条目,或者如果它不存在则添加一个

repo    abc
  RW+            = jenkins

现在提交并推送更改

git commit -a -m "Adding user jenkins to repo abc"
git push

现在再次执行ssh git@host,看看gitolite是否会告诉您新的权限。