基于HTTPS的Gitolite LDAP身份认证Web部署需求咨询
基于Web的Gitolite + LDAP认证实现方案
核心逻辑
放弃SSH,全用HTTP/HTTPS走Web访问。靠Web服务器的LDAP模块做身份验证,再让git-http-backend调用Gitolite的权限检查,既实现LDAP登录,又保留Gitolite的完整Git权限控制。
分步操作
1. 给Web服务器搭LDAP认证
以Apache为例(Nginx用auth_ldap模块,逻辑类似):
- 先启用
mod_authnz_ldap和mod_authz_core这俩模块 - 在Git访问的配置段里加LDAP认证规则:
<Location /git> AuthType Basic AuthName "Git LDAP Login" AuthBasicProvider ldap AuthLDAPURL "ldap://你的LDAP服务器地址:389/ou=users,dc=你的域名,dc=com?uid?sub?(objectClass=inetOrgPerson)" AuthLDAPBindDN "cn=LDAP管理员账号,dc=你的域名,dc=com" AuthLDAPBindPassword "LDAP管理员密码" Require valid-user </Location>
把里面的LDAP地址、DN路径、绑定账号换成你自己的实际配置。
2. 让git-http-backend和Gitolite联动
Gitolite有配套脚本,能让git-http-backend调用它做权限校验:
- 把Web服务器的运行用户(比如www-data)加到Gitolite的
gitolite.conf里,至少给它权限检查的权限 - 在Web服务器配置里,把Git请求转发到git-http-backend,同时设置环境变量关联Gitolite:
SetEnv GIT_PROJECT_ROOT /你的Gitolite仓库存放目录 SetEnv GITOLITE_HTTP_HOME /Gitolite用户的主目录(比如/home/git) SetEnv PATH $PATH:/Gitolite的bin目录路径 ScriptAlias /git /usr/lib/git-core/git-http-backend/
替换路径为你实际的目录位置。
3. 调整Gitolite配置适配HTTP访问
- 打开Gitolite用户主目录下的
.gitolite.rc,确保GIT_CONFIG_KEYS包含http.*,允许仓库配置HTTP相关选项:
$GIT_CONFIG_KEYS = '.*'; # 嫌太松的话也可以设成http.*
- 在
gitolite.conf里给需要HTTP访问的仓库配置权限,比如:
repo my-project RW = @ldap-developers R = @ldap-viewers
这里的@ldap-developers可以是Gitolite里配置的组,也可以直接用LDAP的用户名——Web认证后,用户名会自动传给Gitolite做校验。
4. 测试验证
- 用
git clone https://你的服务器地址/git/my-project.git测试,输入LDAP账号密码,看能不能正常克隆 - 试试推送操作,确认权限控制生效
- 要是出问题,看Web服务器日志和Gitolite的日志,排查认证或权限的问题
注意点
- 必须用HTTPS,别用HTTP明文传密码
- Web服务器的运行用户要对Gitolite仓库目录有读权限,可推送的仓库要有写权限
- 要是想在Gitolite里用LDAP用户组,要么在Gitolite的groups里手动配置,要么写个脚本同步LDAP组到Gitolite用户列表
内容的提问来源于stack exchange,提问作者anonymous
相关产品推荐
相关产品推荐

