0

我正在尝试为 Jenkins 添加一个用户(但我猜任何本地用户都会做同样的问题)以连接到同一个盒子上Gitolite 服务器

  • 我为 Jenkins 生成了 SSH 密钥。
  • 我将公钥添加到 Gitolite 的配置中。
  • 我可以使用 Jenkins 在我的本地主机服务器上连接到 SSH。
  • 我正在使用 SSH 连接到 Gitolite

例如,以下确实有效

sudo su jenkins
ssh localhost

但以下不起作用

sudo su - jenkins
git clone jenkins@localhost:my-repo

它总是在说

您似乎克隆了一个空存储库

但以下确实有效

sudo su - jenkins
git clone gitolite@localhost:my-repo

我想我找到了为什么它不起作用,但我想知道是否有替代方法。

gitolite 的 .ssh 文件夹中有一个authorized_keys 文件,其中包含一个“命令”和 jenkins 的公钥。我想这是为了设置正确的 shell 来使用 gitolite。但是,Jenkins 的 ~/.ssh 文件夹中还有一个 authorized_keys

我想当我尝试使用用户“jenkins”连接到 gitolite 时,使用 jenkins 的“家”而不是 gitolite 存储库,因此它试图在 Jenkins 的家中找到存储库。

有没有办法可以使用 Jenkins(与 Gitolite 服务器在同一个盒子上)连接到 gitolite 而不会出现这个问题?

4

1 回答 1

0

URL 前面的 gitolite@ 实际上并不是您在 SSH 中使用的用户。它是服务器上的服务(我假设),所以 gitolite@localhost:my-repo 是完全有效的。

使用 GIT 时,您会一直看到对 git@ 的引用。您的服务是 gitolite,因此 gitolite@ 将始终被使用。

Git 服务器使用 SSH 公钥进行身份验证,因此您创建的密钥是允许用户连接到服务器的密钥。该密钥也与该用户相关,因此当使用该密钥时,假定该用户发出 git 命令,例如提交。

在旁注中,当我第一次开始使用我们的 GIT 系统时,一位同事推荐了http://documentup.com/skwp/git-workflows-book,它对理解这个真正出色的版本控制系统有很大帮助。

于 2013-10-16T04:00:22.360 回答