温馨提示×

centos gitlab如何集成ldap

小樊
41
2026-08-03 16:20:41
栏目: 智能运维

CentOS 上部署的 GitLab 集成 LDAP 是非常常见的需求,下面我按通用、稳定、可落地的方式给你一个完整说明(适用于 Omnibus 版 GitLab,这是官方推荐方式)。


一、前置条件

  1. GitLab 已安装

    • 推荐:Omnibus 安装方式
    • 查看版本:
      gitlab-rake gitlab:env:info
      
  2. LDAP 服务可用

    • 常见:OpenLDAP / Microsoft Active Directory (AD)
    • 确保:
      • 可网络访问(端口 389 / 636)
      • 可绑定(bind)的账号
      • 知道 base DN

二、GitLab LDAP 集成核心配置文件

GitLab 的 LDAP 配置位于:

/etc/gitlab/gitlab.rb

⚠️ 不要直接改 gitlab.yml,那是自动生成的。


三、LDAP 配置示例(通用 LDAP / OpenLDAP)

1️⃣ 编辑配置文件

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

四、Active Directory(AD)示例(常见)

如果你用的是 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


五、启用 LDAPS / TLS(推荐)

使用 LDAPS(636)

port: 636
encryption: 'simple_tls'

或使用 StartTLS(389)

port: 389
encryption: 'start_tls'

六、应用配置并重启 GitLab

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

七、测试 LDAP 是否配置成功

1️⃣ 检查 LDAP 配置

sudo gitlab-rake gitlab:ldap:check

✅ 正常输出应能看到 LDAP 用户列表


八、登录方式说明

  • 登录页面会增加 LDAP 登录选项
  • 用户使用 LDAP 用户名/密码 登录
  • 首次登录自动创建 GitLab 账号
  • 用户信息与 LDAP 保持同步(每次登录)

九、常见问题排查

1️⃣ 登录失败 / 用户不存在

✅ 检查:

  • base
  • uid
  • bind_dn 是否有权限
  • user_filter 是否限制太严

2️⃣ LDAP 证书问题

verify_certificates: false

(仅调试用,不建议生产)

3️⃣ CentOS 防火墙

sudo firewall-cmd --add-service=ldap --permanent
sudo firewall-cmd --reload

十、可选高级配置

  • ✅ 多 LDAP 服务器
  • ✅ 用户过滤(如只允许某个组)
  • ✅ 禁止本地账号登录
  • ✅ 自动同步 LDAP 用户(EE 版)

十一、总结

核心步骤只有三步

  1. 修改 /etc/gitlab/gitlab.rb
  2. gitlab-ctl reconfigure
  3. gitlab-rake gitlab:ldap:check

如果你愿意,可以告诉我:

  • OpenLDAP 还是 AD?
  • CentOS 7 还是 8 / Stream?
  • GitLab CE 还是 EE?

我可以给你一份完全针对你环境的配置模板

0