温馨提示×

GitLab如何集成Linux LDAP

小樊
56
2026-07-14 12:12:56
栏目: 智能运维

GitLab 集成 Linux LDAP(通常指 OpenLDAP)主要通过修改 GitLab 的配置文件来实现。以下是详细的集成步骤和配置说明。


一、前置条件

  1. 已安装 GitLab(Omnibus 或源码安装均可,推荐 Omnibus)。
  2. 已部署 OpenLDAP 服务,并知道以下信息:
    • LDAP 服务器地址(IP 或域名)
    • 端口(默认 389,加密 636
    • Base DN
    • Bind DN(用于连接 LDAP 的管理账号)
    • Bind DN 密码
    • 用户和组的目录结构

二、修改 GitLab LDAP 配置

1. 编辑 GitLab 配置文件

sudo vim /etc/gitlab/gitlab.rb

2. 添加 LDAP 配置

示例(OpenLDAP 常见配置):

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
  smartcard_auth: false
  active_directory: false
  allow_username_or_email_login: true
  lowercase_usernames: true
  block_auto_created_users: false
  base: 'ou=people,dc=example,dc=com'
  user_filter: ''
  attributes:
    username: ['uid']
    email: ['mail']
    name: ['cn']
    first_name: ['givenName']
    last_name: ['sn']
EOS

3. 常见参数说明

参数 说明
host LDAP 服务器地址
port 389(普通) / 636(SSL)
uid 登录使用的属性,OpenLDAP 通常是 uid
bind_dn 用于查询 LDAP 的账号
base 用户搜索基准
user_filter 用户过滤条件(可选)
active_directory OpenLDAP 设为 false

三、应用配置

sudo gitlab-ctl reconfigure

四、验证 LDAP 是否生效

1. 检查 LDAP 用户是否可查询

sudo gitlab-rake gitlab:ldap:check

正常输出示例:

Checking LDAP ...

Server: ldapmain
LDAP authentication... Success
LDAP users with access to your GitLab server (only showing the first 100 results)

2. 登录测试

  • 打开 GitLab 登录页
  • 使用 LDAP 中的用户名和密码登录
  • 首次登录会自动创建 GitLab 用户

五、启用 LDAPS(可选)

1. 修改端口和加密方式

port: 636
encryption: 'simple_tls'

2. 证书问题

如果 LDAP 使用自签名证书:

verify_certificates: false

或把 CA 证书放入:

/etc/gitlab/trusted-certs/

然后重新配置。


六、LDAP 用户与 GitLab 用户关系

  • LDAP 用户 首次登录时自动创建
  • GitLab 数据库中的用户与 LDAP 账号绑定
  • GitLab 不会回写 LDAP
  • 禁用 LDAP 用户需在 LDAP 端操作

七、常见问题

1. 登录失败

  • 检查 bind_dn 和密码
  • 确认 base 是否正确
  • 查看日志:
sudo gitlab-ctl tail gitlab-rails

2. 用户名冲突

  • 确保 uid 唯一
  • 使用 lowercase_usernames: true

3. 用户无法登录但 ldap:check 正常

  • 检查 user_filter
  • 检查是否被 block_auto_created_users 阻止

八、参考文档

  • 官方文档:
    https://docs.gitlab.com/ee/administration/auth/ldap/

如果你愿意,我可以:

  • ✅ 根据你的 LDAP 实际结构帮你写完整配置
  • ✅ 区分 OpenLDAP / Active Directory
  • ✅ 只同步指定用户或组
  • ✅ 配置 LDAP + 二次认证(2FA)

只要把你的 LDAP 结构贴出来即可。

0