在 CentOS 上部署的 GitLab 集成 LDAP 是非常常见的需求,下面我按通用、稳定、可落地的方式给你一个完整说明(适用于 Omnibus 版 GitLab,这是官方推荐方式)。
GitLab 已安装
gitlab-rake gitlab:env:info
LDAP 服务可用
GitLab 的 LDAP 配置位于:
/etc/gitlab/gitlab.rb
⚠️ 不要直接改 gitlab.yml,那是自动生成的。
sudo vi /etc/gitlab/gitlab.rb
添加或修改以下内容:
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main:
label: 'LDAP'
host: 'ldap.example.com'
port: 389
uid: 'uid'
bind_dn: 'cn=admin,dc=example,dc=com'
password: 'ldap_admin_password'
encryption: 'plain' # 生产环境建议 start_tls 或 simple_tls
verify_certificates: true
base: 'dc=example,dc=com'
user_filter: ''
attributes:
username: ['uid']
email: ['mail']
name: 'cn'
first_name: 'givenName'
last_name: 'sn'
EOS
如果你用的是 Windows AD:
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main:
label: 'AD'
host: 'ad.company.com'
port: 389
uid: 'sAMAccountName'
bind_dn: 'gitlab@company.com'
password: 'password'
encryption: 'plain'
base: 'dc=company,dc=com'
user_filter: ''
attributes:
username: ['sAMAccountName']
email: ['mail']
name: 'displayName'
first_name: 'givenName'
last_name: 'sn'
EOS
✅ AD 常用 UID 是 sAMAccountName
port: 636
encryption: 'simple_tls'
port: 389
encryption: 'start_tls'
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo gitlab-rake gitlab:ldap:check
✅ 正常输出应能看到 LDAP 用户列表
✅ 检查:
baseuidbind_dn 是否有权限user_filter 是否限制太严verify_certificates: false
(仅调试用,不建议生产)
sudo firewall-cmd --add-service=ldap --permanent
sudo firewall-cmd --reload
✅ 核心步骤只有三步
/etc/gitlab/gitlab.rbgitlab-ctl reconfiguregitlab-rake gitlab:ldap:check如果你愿意,可以告诉我:
我可以给你一份完全针对你环境的配置模板。