在 GitLab(以 Omnibus 安装 为例)中接入 Debian / 通用 LDAP(如 OpenLDAP),主要通过修改 gitlab.rb 并重新配置实现。下面给你一套可落地的步骤。
slapd)ldap://ldap.example.com:389)dc=example,dc=com)编辑配置文件:
sudo vim /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' # Debian/OpenLDAP 常用 uid
bind_dn: 'cn=admin,dc=example,dc=com'
password: 'ldap_admin_password'
encryption: 'plain' # 或 'simple_tls' / 'start_tls'
base: 'dc=example,dc=com'
user_filter: '' # 可限制用户范围
EOS
encryption: 'simple_tls'
ca_file: '/etc/ssl/certs/ca-certificates.crt'
Debian / OpenLDAP 用户通常为 inetOrgPerson 或 posixAccount
| GitLab 字段 | LDAP 属性 |
|---|---|
| 用户名 | uid |
| 邮箱 | |
| 姓名 | cn |
如需自定义:
username: ['uid']
email: ['mail']
name: 'cn'
sudo gitlab-ctl reconfigure
检查 LDAP 是否可用:
sudo gitlab-rake gitlab:ldap:check
输出中能看到 LDAP 用户即说明成功。
uid + 密码登录gitlab_rails['ldap_allow_admin_login'] = true
gitlab_rails['signin_enabled'] = false
base 写错uid 不是实际属性user_filter 限制过严dn: uid=alice,dc=example,dc=com
objectClass: inetOrgPerson
uid: alice
cn: Alice
mail: alice@example.com
userPassword: secret
如果你用的是 Docker GitLab 或 GitLab CE < 16,或想做 LDAP 分组同步,可以继续问我。