17

请原谅令人沮丧的暗示,因为我多次尝试正确设置但无济于事(可能而且很可能是由于我的无知,也可能是由于缺乏详尽而简洁的文档)。

我正在尝试设置一个 git 服务器,以便我可以在一小群开发人员之间共享代码。每个开发人员都可以从多个客户端 PC 进行连接。我过去来自 MS,所以在开发工具集方面我有点被宠坏了,但如果我能得到类似于 TFS 的东西,那就太棒了。

当尝试设置 gitosis (我知道这是不推荐使用的 git 社区每个https://serverfault.com/questions/225495/ubuntu-server-gitosis-user-naming-convention)或 gitolite 时,似乎设置好后,我必须非常小心,因为似乎一切都在牙签上保持平衡。

我最近尝试设置一个 git 服务器包括将我的公钥 (benny.pub) 从我的笔记本电脑移动到服务器,使用该公钥设置所有内容并拉下配置以设置 repo 和权限。然后我意识到我想在另一台 PC 上开发,所以我创建了一个新密钥 (benny@desktop.pub) 并将 benny.pub 重命名为 benny@laptop.pub,这显然把事情搞砸了。这就是我知道我通过更改名称而变得愚蠢的地方。

经过冗长的描述后,我的问题是:如何设置一个坚固的自托管 git 服务器,让多个开发人员从多台机器登录,同时保持安全等?必须有一种经过验证的技术(gitolite 描述了可能 4-5 种不同的方式......也令人沮丧)来做到这一点,因为我确信我不是唯一一个试图做同样事情的人。也许 git 不适合我的团队?

任何帮助是极大的赞赏!

4

6 回答 6

15

根据我的经验,您所需要的只是一个具有单个git 帐户/登录名的 SSH 服务器,您可以使用您的一个公钥连接到该服务器。使用 SSH 安装 gitolite(将 gitloite 从您的客户端复制到服务器并进行基本设置)并让您的开发人员向您发送他们的公钥。将这些密钥添加到您的 gitolite-admin 存储库~并推送。

为什么开发人员首先需要多个密钥对,即使使用多台机器?这种情况既不会影响 SSH 处理身份验证的方式,也不会影响 gitolite 处理授权的方式:它们仍然是 SSH 密钥。

  • 如果开发人员必须使用多个密钥对(一个用于 git,另一个用于其他服务器),让他们处理复杂性并建议他们为~/.ssh/config他们使用的每个密钥对/服务器组合创建一个条目。

  • 如果开发人员在使用的每台机器上都有不同的密钥对,gitolite 组可以组合多个公钥:

@agross = agross-1 agross-2
于 2011-04-10T00:12:35.060 回答
4

几个指针:

Scott Chacon 的pro git book关于服务器上 git 的部分

Gitorious是 FOSS

于 2011-04-09T20:49:13.020 回答
2

我在工作中维护一个 gitosis 配置,当开发人员有多个 ssh 密钥时,我所要做的就是将所有这些密钥放在同一个keydir/user.pub文件中。

所以把你所有的钥匙串起来keydir/benny.pub,你就应该准备好了。

于 2011-04-09T20:25:17.587 回答
2

有一些开源 git 托管解决方案具有基于 Web 的 UI,用于创建存储库和添加用户(如GitHub:FI)......虽然我不知道限制访问:

高温高压

于 2011-04-10T18:12:43.640 回答
1

我正在使用 debian,每个开发人员在服务器上都有一个帐户。我使用带有私钥登录的 ssh。最后,开发人员必须使用 ssh://username@example.com/git-repo/repo.git 之类的 url 来结帐或在任何情况下与 repo 上的 git 交互

于 2011-04-09T20:09:48.190 回答
0

我认为问题在于您的 ssh 客户端(windows 或 linux 版本)没有找到密钥文件。我有同样的问题并以这种方式解决:

  • 在我的笔记本中,在 ~/.ssh 文件夹中生成了密钥文件 (rafael.nicoletti@mycorporation)(其中 ~ 是主文件夹。windows 版本是 %HOME% env)
  • 我在 ~/.ssh 中添加了一个文件名配置,内容如下:

    IdentityFile ~/.ssh/rafael.nicoletti@corporation

在我想访问我的 git 服务器的每个位置,我只需将这些文件复制到我的 %HOME% 文件夹中

您还可以将一些类似的东西放在配置文件中:

IdentityFile /d/identity.key
IdentityFile /e/identity.key
IdentityFile /f/identity.key
IdentityFile /.../identity.key

因此配置将在可移动媒体中查找密钥。

于 2012-01-27T02:57:12.683 回答