繁体   English   中英

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

[英]Jenkins - Unable to git clone from slave node. SSH keys

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

例如,来自大师:

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

这样就证明了从节点也在'jenkins'用户下运行。 (我已将jenkins @ slave的公共ssh密钥复制到远程git服务器)。 而且我可以从slave手动发出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

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

你有没有像gitolite那样设置什么?

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

ssh git@slave 

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

如果您没有在服务器计算机上设置任何其他内容,请将您的克隆URL更改为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是否告诉您有关新权限的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM