使用gitolite的git的存储库和用户访问

时间:2013-03-23 17:35:33

标签: git gitolite

首先,我是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
    
  3. 现在我的问题是我提交这些文件并将它们推送到服务器上。那么会发生什么? 如何创建这些回购?我是否必须手动创建它们或者gitolite会创建它吗?

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

    git@server.com:phpsite或者是clientA@server:phpsite

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

    任何帮助或暗示都非常明显。


    修改

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

    repo phpsite
       RW+     =  alice-clientA
    

    OR

    应该和以前一样

     repo php:site
       RW+    =   alice
    

    谢谢!

1 个答案:

答案 0 :(得分:3)

  

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

没有。 “git”是一个普通帐户。

  

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

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

点击“How do programs like gitolite work?”了解更多信息。

始终使用ssh连接作为用户git

git@server.com:phpsite

您永远不会尝试使用clientA ssh:由于clientA公开/私有ssh密钥,ssh会将您验证为clientA