2012-04-17 154 views
11

我刚刚建立了我的第一个詹金斯奴隶。我运行该版本,并且遇到了SSH密钥的问题。 Jenkins主服务器在用户'jenkins'下运行。我已经设置了SSH密钥,这样我就可以不需要密码就可以从主服务器连接到从服务器。詹金斯 - 无法从奴隶节点克隆克隆。 SSH密钥

例如来自主机:

[email protected]:~$ ssh slave 
Last login: Tue Apr 17 10:30:22 2012 from masterjenkins.com 
$ whoami 
jenkins 

因此,证明从节点也在'jenkins'用户下运行。 (我已经从jenkins @ slave将public ssh密钥复制到远程git服务器上)。而我能够从从手动发出git的克隆,但是当我揭开序幕,构建从主我得到这些类型的邮件:

ERROR: Error cloning remote repo 'origin' : Could not clone [email protected]:abc 
hudson.plugins.git.GitException: Could not clone [email protected]:abc 
Caused by: hudson.plugins.git.GitException: Error performing command: git clone --progress -o origin [email protected]:abc /var/lib/jenkins/workspace/abc_build 
Command "git clone --progress -o origin [email protected]: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 [email protected]: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

主机密钥验证失败似乎表明您的Jenkins用户从未从未接受过该服务器,并且您还没有接受主机密钥,请尝试从CLI作为jenkins用户进行sshing以确保其正常工作,并接受主机密钥。 – Doon 2012-04-17 12:22:07

+0

@Doon这可能最终成为问题。我原本以为你试图从詹金斯试图克隆的同一台机器上ssh。 – 2012-04-17 12:37:51

+0

得到了混蛋!感谢您的输入。 我复制并粘贴命令詹金斯试图在奴隶上运行: git clone --progress -o origin git @ host:abc/var/lib/jenkins/workspace/abc 事实证明,我有一些违规的键在/root/.ssh/known_hosts 删除这些并再次连接到git repo后,它的工作! – nonshatter 2012-04-17 13:30:38

回答

5

此基础上出现你是混合了两种不同的身份验证方法克隆URL。您尝试以用户git而不是jenkins作为SSH进入主机。通常,当您托管自己的GIT存储库并使用git @ servername:reponame克隆时,可以使用类似gitolite的东西。

你有没有设置任何东西像gitolite?

尝试像这样的ssh'ing而不是詹金斯用户。

ssh [email protected] 

然后看看会有什么回报。这是一个SSH更符合你正在做的[email protected]:abc

如果你没有设置任何服务器计算机上的其他人,然后改变你的克隆网址[email protected]:pathtorepo

更新

/home/git/.ssh/authorized_keys

应该有一个这样的条目:(这是所有关于ONE行)

# 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 

Add repository permiss离子在gitolite詹金斯: (您可能需要克隆承载的仓库在同一台机器上,作为gitolite用户)

git clone [email protected]: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 [email protected]再看看gitolite告诉你有关你的新权限。

+0

嗨,对不起,我忘了补充一点,我们使用gitolite来管理我们的git用户。 ssh从主人到奴隶作为ssh git @奴隶只是提示输入密码。 有一件令我烦恼的事情是,我无法轻松找到一个简单的方法来查看詹金斯像奴隶一样奔跑。登录到slave后,我做了一个ssh-keygen,并将这些文件保存在/home/jenkins/.ssh/id_rsa的默认位置。 然后我将公钥复制到gitolite。 – nonshatter 2012-04-17 12:21:21

+0

@nonshatter这意味着gitolite或其他东西没有正确设置。您确定您的服务器上的authorized_keys设置正确吗?我使用gitlab来管理我的gitolite实例。直到您无需密码才能成功ssh git @ host,您的克隆将无法工作。首先要检查的是'git'用户的服务器上的authorized_keys和你的jenkins用正确的公钥来命名。 – 2012-04-17 12:24:56

+0

从奴隶: '$ SSH的git @主机 PTY分配请求信道失败0 你好詹金斯,这是混帐1.7.0.4 运行gitolite v2.1-31-gf0cedeb的gitolite配置为您提供了以下访问: @R_ @W_ \t测试 RW \t abc 与主机的连接已关闭。' – nonshatter 2012-04-17 12:34:33