2011-09-25 104 views
6

我一直在试图让我的gitolite与jenkins一起工作,所以我可以从服务器托管repos并与Jenkins一起工作(它们位于相同的服务器)。试图让jenkins和gitolite成功工作 - 权限被拒绝(公钥,密码)

我有gitolite工作,但我想我有问题与SSH。 我在聊天中获得了一些帮助,并将私钥添加到jenkins/.ssh。

我有一个用户“git”托管的gitolite,我有一个用户“gitolite”和“jenkins”用户。我可以通过使用git clone [email protected]克隆回购:Matrix

但是我不能在jenkins中使用它。我尝试构建时遇到这个问题。

Checkout:workspace//var/lib/jenkins/jobs/Matrix/workspace - 
[email protected] 
Using strategy: Default 
Checkout:workspace//var/lib/jenkins/jobs/Matrix/workspace - 
[email protected] 

Cloning the remote Git repository 
Cloning repository origin 
ERROR: Error cloning remote repo 'origin' : Could not clone [email protected]:Matrix 
ERROR: Cause: Error performing command: git clone --progress -o origin [email protected]:Matrix /var/lib/jenkins/jobs/Matrix/workspace 
Command "git clone --progress -o origin [email protected]:Matrix 
/var/lib/jenkins/jobs/Matrix/workspace" returned status code 128: Cloning into  /var/lib/jenkins/jobs/Matrix/workspace... 
Permission denied, please try again. 
Permission denied, please try again. 
Permission denied (publickey,password). 
fatal: The remote end hung up unexpectedly 

Trying next repository 
ERROR: Could not clone repository 
FATAL: Could not clone 
hudson.plugins.git.GitException: Could not clone 
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1042) 
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:968) 
at hudson.FilePath.act(FilePath.java:758) 
at hudson.FilePath.act(FilePath.java:740) 
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:968) 
at hudson.model.AbstractProject.checkout(AbstractProject.java:1193) 
at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:566) 
at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:454) 
at hudson.model.Run.run(Run.java:1376) 
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 
at hudson.model.ResourceController.execute(ResourceController.java:88) 
at hudson.model.Executor.run(Executor.java:230) 

我登录到我的服务器和苏 - 詹金斯,然后键入“SSH -v混帐@服务器”我得到这个。

[email protected]:~$ sudo su - jenkins 
[email protected]:~$ ssh -v [email protected] 
OpenSSH_5.8p1 Debian-1ubuntu3, OpenSSL 0.9.8o 01 Jun 2010 
debug1: Reading configuration data /etc/ssh/ssh_config 
debug1: Applying options for * 
debug1: Connecting to server [127.0.1.1] port 22. 
debug1: Connection established. 
debug1: identity file /var/lib/jenkins/.ssh/id_rsa type -1 
debug1: identity file /var/lib/jenkins/.ssh/id_rsa-cert type -1 
debug1: identity file /var/lib/jenkins/.ssh/id_dsa type -1 
debug1: identity file /var/lib/jenkins/.ssh/id_dsa-cert type -1 
debug1: identity file /var/lib/jenkins/.ssh/id_ecdsa type -1 
debug1: identity file /var/lib/jenkins/.ssh/id_ecdsa-cert type -1 
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.8p1 Debian-1ubuntu3 
debug1: match: OpenSSH_5.8p1 Debian-1ubuntu3 pat OpenSSH* 
debug1: Enabling compatibility mode for protocol 2.0 
debug1: Local version string SSH-2.0-OpenSSH_5.8p1 Debian-1ubuntu3 
debug1: SSH2_MSG_KEXINIT sent 
debug1: SSH2_MSG_KEXINIT received 
debug1: kex: server->client aes128-ctr hmac-md5 none 
debug1: kex: client->server aes128-ctr hmac-md5 none 
debug1: sending SSH2_MSG_KEX_ECDH_INIT 
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY 
debug1: Server host key: ECDSA f3:ab:a6:55:83:98:c5:4f:85:c6:70:be:2f:40:1f:65 
debug1: Host 'server' is known and matches the ECDSA host key. 
debug1: Found key in /var/lib/jenkins/.ssh/known_hosts:3 
debug1: ssh_ecdsa_verify: signature correct 
debug1: SSH2_MSG_NEWKEYS sent 
debug1: expecting SSH2_MSG_NEWKEYS 
debug1: SSH2_MSG_NEWKEYS received 
debug1: Roaming not allowed by server 
debug1: SSH2_MSG_SERVICE_REQUEST sent 
debug1: SSH2_MSG_SERVICE_ACCEPT received 
debug1: Authentications that can continue: publickey,password 
debug1: Next authentication method: publickey 
debug1: Trying private key: /var/lib/jenkins/.ssh/id_rsa 
debug1: read PEM private key done: type RSA 
debug1: Authentications that can continue: publickey,password 
debug1: Trying private key: /var/lib/jenkins/.ssh/id_dsa 
debug1: Trying private key: /var/lib/jenkins/.ssh/id_ecdsa 
debug1: Next authentication method: password 
[email protected]'s password: 

它仍然要求输入密码... 任何人这样做了吗?获得gitolite与jenkins合作? 我非常感谢任何帮助,并可以很乐意捐出10块钱(签证卡)来帮助我设置!

+1

根据SSH日志,您的私钥“id_rsa”未被服务器接受。检查gitolite是否有与私钥匹配的公钥,并且gitolite已经使用该密钥正确更新了〜/ git/.ssh/authorized_keys文件。 –

+0

感谢您的回答!我正在研究它,但我不知道如何解决这个问题。在詹金斯我不能做一个构建,但我不知道我想怎么想。 如果我得到我的火柴人专业版,并尝试访问我的服务器,我想只写ssh eject.se? 哪个auths我需要吗?我的iMac服务器,我的MacBook服务器,詹金斯?和gitolite? 我得到了一个git用户,这是我在ubuntu上的主要用户,我可以使用git clone [email protected]:Matrix 但是我需要什么让jenkins接受和克隆这个呢? 非常感谢答复,我遵守我的捐款承诺(签证卡需求) Joniz – Jonathan

+0

我将退出这一个,并试用本指南! http://www.nomachetejuggling.com/2011/07/31/ubuntu-tomcat-jenkins-git-ssh-togethe/ 让se如何。 – Jonathan

回答

14

SSH进入詹金斯箱,并为詹金斯用户SSH密钥对(假设jenkins这里):

local$ ssh jenkins-box 
[email protected]$ sudo su jenkins 
[email protected]$ ssh-keygen 
[email protected]$ cat $HOME/.ssh/id_rsa.pub 

复制你在屏幕上看到并粘贴到新的文件keydir/jenkins.pub的SSH公钥在您的本地gitolite管理库中。

添加以下行conf/gitolite.conf给予詹金斯权限进行克隆,并把所有的数据存储:

repo @all 
     R  = jenkins 

提交和推gitolite管理资源库。詹金斯现在应该正常工作。

+0

谢谢你,我的问题 –

+1

注意工作完美,在某些设备中'jenkins'用户不登录而是一个系统/守护用户。在这些情况下运行'须藤-u jenkins'前的命令应该很好地工作(在我的情况,我不得不手动创建'/家庭/ jenkins'太)。此外,一定要运行一个测试克隆作为詹金斯:'须藤-u詹金斯克隆的git @服务器:回购〜/ testclone' –

+0

更正我的上一个注释:'须藤-u git的詹金斯克隆的git @服务器:回购〜/ testclone' –

相关问题