使用用户名和密码验证的Git服务器

时间:2014-06-08 10:12:47

标签: git

我想设置一个Git服务器,让我的开发人员使用用户名和密码登录,以便提交和更改项目。我还需要管理开发人员对项目的访问权限(我想我应该使用gitolite)。

我该怎么做?

我习惯Subversion这很容易,因为你可以为每个开发人员设置用户名和密码,这可以轻松访问存储库而无需生成SSH密钥并将其放在服务器上。

2 个答案:

答案 0 :(得分:2)

在Unix / Linux上,只需在服务器上为git项目创建一个新目录(命名约定是文件夹名称应以.git结尾)。 然后使用:

初始化目录

git init --bare

现在你有一个空的git主仓库。用户可以使用以下命令从服务器克隆此repo:

git clone username @ hostname:/ path / to / git / folder

(将要求输入密码)

使用Unix / Linux用户管理工具管理您的开发者访问权限。

答案 1 :(得分:1)

如果您考虑“How do programs like gitolite work?”, gitolite 只是authorization layer,这意味着一个脚本:

  • 将git命令和用户ID
  • 作为输入
  • 将输出ok或拒绝(如果可以,调用git命令)

因此,gitolite本身不允许使用用户名/密码登录(或者就此而言是ssh)。

只有你放在git / gitolite前面的监听器会询问上述用户名/密码并检查其帐号的有效性。
或者你可以使用sshd监听器,如果你想使用公钥/私钥,但想法是一样的。

请参阅“Using LDAP as auth method to manage git repositories”:如果您放置Apache或NGiNX,这些Web服务器可以查询LDAP服务器并询问/检查这些凭据。
这是身份验证步骤。

然后你需要将它们链接到gitolite(而不是git)进行授权步骤,
就像我在Apache configuration file

中所做的那样
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。

请注意,正如我在“Distributed Version Control Systems and the Enterprise - a Good mix?”中所解释的那样,git本身并不关心,也不处理身份验证/授权。
因此,你把听众放在它面前。