首先,我是GIT和gitolite的新手。但我已经阅读了足够的内容并清除了我的基本概念 我正在关注Sitaram的教程https://github.com/sitaramc/gitolite我想问几个问题需要澄清和怀疑。
我有一个用户git。是否真的有必要让git用户没有密码(使用--disabled-password
选项创建的用户(我无法使其在RHEL上工作。但是它适用于ubuntu))?我知道git用户必须可以使用ssh访问。
假设我有一个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
alice-clientA.pub
生成和命名公钥?根据我的理解,不同的文件名不应该是身份验证的问题。但是,repo下的用户名conf/gitolite.conf
应该是什么样的
repo phpsite
RW+ = alice-clientA
OR
应该和以前一样
repo php:site
RW+ = alice
谢谢!
答案 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
。