带有用户名和密码认证的Git服务器

6
我希望设置一个Git服务器,让我的开发人员使用用户名和密码登录,以便提交并更改项目。我还需要管理开发者对项目的访问(我认为应该使用gitolite来实现这一点)。
我该怎么办?
我习惯于使用Subversion,因为您可以为每个开发人员设置用户名和密码,并且可以轻松地访问存储库,而无需生成SSH密钥并将其放在服务器上。
2个回答

4
在Unix/Linux系统中,为你的git项目在服务器上创建一个新目录(命名规则是文件夹名称应该以.git结尾)。然后使用以下命令初始化此目录: git init --bare 现在你有一个空的git主仓库。用户可以使用以下命令从你的服务器克隆这个仓库: git clone username@hostname:/path/to/git/folder (会要求输入密码)
使用Unix/Linux用户管理工具来管理你的开发者访问权限。

3
是的,但我不想为每个开发人员新增一个Linux用户,而且我也想决定将每个开发人员分配给哪个项目。 - Giorgio

2
如果你考虑 "类似gitolite的程序如何工作?",gitolite 只是一个 授权层,也就是一个脚本,它:
  • 以 git 命令和 用户ID 作为输入
  • 输出 ok 或 denied(如果是 ok,则调用 git 命令)

因此,gitolite 本身不允许使用用户名/密码(或 ssh)进行登录。

只有你放在 git/gitolite 前面的 监听器 才会要求提供用户名/密码,并检查其账户有效性。
或者,如果你想使用公钥/私钥来工作,可以使用 sshd 监听器,但思路是相同的。

参见 "使用LDAP作为管理git存储库的身份验证方法":如果你放置了 Apache 或 NGiNX,这些 Web 服务器可以查询 LDAP 服务器并询问/检查这些凭据。
这是身份验证步骤。

然后您需要将它们链接到gitolite(而不是git)进行授权步骤,就像我在Apache配置文件中所做的那样。
ScriptAlias /hgit/ @H@/sbin/gitolite-shell/    # <=== calls gitolite.
SetEnv GIT_HTTP_BACKEND "@H@/usr/local/apps/git/libexec/git-core/git-http-backend"

gitolite需要GIT_HTTP_BACKEND才能正确调用git。
请注意,正如我在“分布式版本控制系统和企业-良好的组合?”中所解释的那样,git本身并不关心也不处理身份验证/授权。 因此需要将监听器放在它的前面。

谢谢,我会尝试使用LDAP进行身份验证,因为我还有其他服务需要集中式身份验证。 - Giorgio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接