11

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

例如来自主人:

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

这样就证明从节点也在'jenkins'用户下运行。(我已将公共 ssh 密钥从 jenkins@slave 复制到远程 git 服务器)。而且我可以从从站手动发出 git clone,但是当我从主站开始构建时,我会收到以下消息:

    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

4

1 回答 1

5

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

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

以 jenkins 用户身份尝试像这样 ssh'ing。

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 是否告诉你你的新权限。

于 2012-04-17T12:17:19.180 回答