ssh - 试图让 Jenkins 和 gitolite 成功工作 - 权限被拒绝(公钥,密码)

标签 ssh jenkins gitolite

几天来,我一直在尝试让我的 gitolite 与 jenkins 一起工作,这样我就可以从服务器托管 repos 并与 Jenkins 一起工作(它们在同一台服务器上)。

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

我有一个托管 gitolite 的用户“git”,我有一个用户“gitolite”和一个“jenkins”用户。我可以使用 git clone git@e-ject.se:Matrix 克隆一个仓库

但我不能在 Jenkins 中使用它。当我尝试构建时,我得到了这个。

Checkout:workspace / /var/lib/jenkins/jobs/Matrix/workspace -
hudson.remoting.LocalChannel@dbb335
Using strategy: Default
Checkout:workspace / /var/lib/jenkins/jobs/Matrix/workspace -
hudson.remoting.LocalChannel@dbb335

Cloning the remote Git repository
Cloning repository origin
ERROR: Error cloning remote repo 'origin' : Could not clone git@e-ject.se:Matrix
ERROR: Cause: Error performing command: git clone --progress -o origin git@e-ject.se:Matrix /var/lib/jenkins/jobs/Matrix/workspace
Command "git clone --progress -o origin git@e-ject.se: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)

我登录到我的服务器和 su - jenkins,然后输入“ssh -v git@server”我明白了。
git@Server:~$ sudo su - jenkins
jenkins@Server:~$ ssh -v git@server
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
git@server's password: 

它仍然要求输入密码...
有谁做过这个?让 gitolite 与 Jenkins 合作?
我非常感谢任何帮助,并且很乐意捐赠 10 美元(签证卡)来帮助我进行设置!

最佳答案

SSH 进入 Jenkins 盒子并为 Jenkins 用户创建一个 SSH key 对(假设 jenkins 这里):

local$ ssh jenkins-box
you@jenkins-box$ sudo su jenkins
jenkins@jenkins-box$ ssh-keygen
jenkins@jenkins-box$ cat $HOME/.ssh/id_rsa.pub

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

将以下行添加到 conf/gitolite.conf授予 Jenkins 克隆和拉取所有存储库的权限:
repo    @all
        R       =   jenkins

提交并推送 gitolite 管理存储库。 Jenkins 现在应该可以正常工作了。

关于ssh - 试图让 Jenkins 和 gitolite 成功工作 - 权限被拒绝(公钥,密码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7549030/

相关文章:

c# - sshClient.RunCommand C# 超时

java - 使用 Java 通过 SSH 连接到远程 MySQL 数据库

ubuntu - 用于 vim/tmux 的 headless SSH 服务器上的 xsel/xclip

windows - 安装后 Jenkins 的默认凭据

jenkins - 缺少报告结果-使用CucumberReport未成功完成报告

windows - ssh和GIT : couldn't resolve hostname

git - 如何知道 Gitolite 版本?

ssh - 如何确定是否由于您的组而可以使用SFTP写入文件?

jenkins - 如何在 CppCheck 中从命令行运行保存的项目

git-multimail 排除 git diff 和后续邮件