温馨提示×

debian gitlab怎么集成ldap

小樊
44
2026-09-17 16:01:59
栏目: 智能运维

下面给你一个在 Debian 上部署的 GitLab 集成 LDAP(以 OpenLDAP / Active Directory 为例)的实用指南,涵盖配置位置、常见参数、验证方法和排错。


一、前提条件

  • GitLab 已安装在 Debian(Omnibus 或源码均可,以下以 Omnibus GitLab 为主)
  • 已有可用的 LDAP 服务(OpenLDAP / AD)
  • 有 LDAP 管理员账号(用于绑定)
  • GitLab 版本 ≥ 8.x(推荐 ≥ 13.x)

二、LDAP 配置文件位置

Omnibus GitLab 主配置:

/etc/gitlab/gitlab.rb

修改后必须执行:

gitlab-ctl reconfigure
gitlab-ctl restart

三、基础 LDAP 集成(OpenLDAP 示例)

编辑 /etc/gitlab/gitlab.rb:

gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = {
  'main' => {
    'label' => 'LDAP',
    'host' => 'ldap.example.com',
    'port' => 389,
    'uid' => 'uid',
    'method' => 'plain',
    'bind_dn' => 'cn=admin,dc=example,dc=com',
    'password' => 'ldap_admin_password',
    'active_directory' => false,
    'allow_username_or_email_login' => true,
    'base' => 'ou=users,dc=example,dc=com',
    'user_filter' => '',
    'attributes' => {
      'username' => ['uid'],
      'email' => ['mail'],
      'name' => ['cn'],
      'first_name' => ['givenName'],
      'last_name' => ['sn']
    }
  }
}

四、Active Directory(AD)示例

gitlab_rails['ldap_servers'] = {
  'ad' => {
    'label' => 'AD',
    'host' => 'ad.example.com',
    'port' => 389,
    'uid' => 'sAMAccountName',
    'method' => 'plain',
    'bind_dn' => 'cn=gitlab,ou=service,dc=example,dc=com',
    'password' => 'password',
    'active_directory' => true,
    'allow_username_or_email_login' => true,
    'base' => 'dc=example,dc=com',
    'user_filter' => '',
    'attributes' => {
      'username' => ['sAMAccountName'],
      'email' => ['mail'],
      'name' => ['displayName'],
      'first_name' => ['givenName'],
      'last_name' => ['sn']
    }
  }
}

五、使用 LDAPS(推荐)

1. 使用 636 端口

'port' => 636,
'method' => 'ssl',

2. 自签证书(可选)

'ca_file' => '/etc/ssl/certs/ldap-ca.crt',

六、验证 LDAP 是否可用

gitlab-rake gitlab:ldap:check

输出示例:

Checking LDAP...
LDAP users with access to your GitLab server (only showing first 100 results)

七、登录方式

  • GitLab 登录页会出现 “LDAP” 标签页
  • 使用 LDAP 用户名 / 邮箱登录
  • 首次登录自动创建 GitLab 用户

八、常见问题排查

1. 登录失败

  • uid 设置错误(AD 用 sAMAccountName)
  • base 范围不对
  • 用户被 user_filter 过滤

2. 邮箱冲突

'allow_username_or_email_login' => true

3. 只同步部分用户

'user_filter' => '(memberOf=cn=gitlab-users,ou=groups,dc=example,dc=com)'

九、可选增强

  • 禁用本地登录(强制 LDAP)
  • 自动分配用户组
  • 定期同步 LDAP(EE 功能)

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

  • ✅ GitLab 版本
  • ✅ LDAP 类型(OpenLDAP / AD)
  • ✅ 是否使用 SSL

我可以直接帮你写一份可用的 gitlab.rb 配置。

0 踩