1

首先,我是 GIT 和 gitolite 的新手。但是我已经阅读了足够的内容并清除了我的基本概念。我正在关注 Sitaram 的教程https://github.com/sitaramc/gitolite我想问几个问题来澄清和怀疑。

  1. 我有一个用户 git。git 用户是否真的需要没有密码(使用--disabled-password选项创建的用户(我不能让它在 RHEL 上工作。但它在 ubuntu 上工作))?我知道 git 用户必须可以通过 ssh 访问。

  2. 假设我有一个 GIT 服务器和三个客户端 gitadmin、cleintA 和 clientB。现在为了使 gitolite 工作,在 gitadmin 上我将 clientA.pub、ClientB.pub (公钥)复制到keydir然后我编辑我conf/gitolite.conf的如下:

     repo phpsite
           RW+         =   clientA
    
     repo javasite
           RW+         = clientB
    

现在我的问题是当我提交这些文件并将它们推送到服务器上时。那会发生什么?这些回购是如何创建的?我必须手动创建它们还是 gitolite 会创建它?

现在,当 clientA 需要克隆/签出 repo 时,它将使用什么 url?

git@server.com:phpsite还是会clientA@server:phpsite

我知道这个问题可能有点愚蠢,但我真的需要清除这些疑虑

任何帮助或提示都是非常可观的。


编辑

在 VonC 回答之后,我实施了 gitolite 并绕过了另一个怀疑。假设我有一台机器现在clientA有两个用户alice,bob理想情况下公钥应该是alice.pub and bob.pub给这些用户的。alice现在的问题是我可以为like生成并命名一个公钥alice-clientA.pub吗?据我了解,不同的文件名不应该成为身份验证的问题。但是 conf/gitolite.confrepo 下的用户名应该是什么样的

repo phpsite
   RW+     =  alice-clientA

或者

应该和以前一样

 repo php:site
   RW+    =   alice

谢谢!

4

1 回答 1

3

git用户是否真的需要没有密码(使用--disabled-password选项创建的用户)

没有。' git'是一个普通帐户。

当我提交这些文件并将它们推送到服务器时。然后会发生什么

Gitolite 将创建裸仓库phpsite.gitjavasite.git在 ​​中~git/repositories/,它会修改~git/.ssh/authorized_keys以使用公钥和参数clientA调用gitolite 脚本。 它利用了 ssh 机制强制命令clientB

在“ gitolite 之类的程序如何工作? ”中查看更多信息。

始终以用户身份使用 ssh 连接git

git@server.com:phpsite

您永远不会尝试使用 ssh clientA:ssh 将clientA根据您的clientA公共/私人 ssh 密钥对您进行身份验证。

于 2013-03-23T17:40:48.090 回答