Linux服务器可通过AD实现集中身份认证,核心是信任AD域控制器并借助Kerberos与SSSD/Winbind完成登录和用户同步;前提须满足DNS正确、时间偏差≤5分钟、主机名为FQDN及防火墙放行关键端口。

Linux 服务器可以通过 Active Directory 实现集中身份认证,无需为每台机器单独维护用户账号和密码。核心思路是让 Linux 客户端信任 AD 域控制器(DC),借助 Kerberos 协议完成安全登录,并通过 SSSD 或 Winbind 管理用户信息同步与权限映射。
基础前提必须满足
集成前需确保以下条件已就绪,否则后续步骤会失败:
-
网络连通性:Linux 主机能 ping 通域控制器(如
AD1.xxx.corp),且 DNS 正确指向 AD 的 DNS 服务器(通常就是 DC 自身) -
时间同步:Linux 与 AD 域控制器时间偏差不能超过 5 分钟,建议配置 NTP 定期同步,例如:
ntpdate AD1.xxx.corp或使用chronyd -
主机名规范:Linux 主机名需为全限定域名(FQDN),如
web01.xxx.corp,且不能与 AD 中已有计算机对象重名 - 防火墙放行:开放 TCP/UDP 53(DNS)、88(Kerberos)、135–139 / 445(SMB)、389 / 636(LDAP/LDAPS)等关键端口
主流集成方式对比
当前生产环境常用两种路径,选择取决于系统版本与运维习惯:
-
realm + SSSD(推荐用于 RHEL/CentOS 7+、Ubuntu 18.04+):命令简洁、自动化程度高。
sudo realm join xxx.corp -U admin.win一条命令即可完成域加入、Kerberos 配置、SSSD 启用和 PAM 集成 -
adcli + authconfig + SSSD(适用于 CentOS 6/RHEL 6):需分步执行,如先运行
adcli join加入域,再用authconfig --enablesssd --enablesssdauth --update启用认证模块
两者底层都依赖 SSSD 作为用户信息缓存与认证代理,不建议继续使用老旧的 Winbind(尤其在新部署中)。
关键配置文件要点
手动调整时需重点关注以下两个文件的准确性:
-
/etc/krb5.conf:定义 Kerberos 域(default_realm)、KDC 地址(kdc = AD1.xxx.corp)、是否启用 DNS 查找(dns_lookup_kdc = true)。若 AD 启用了 LDAP over SSL,还需配置pkinit_anchors -
/etc/sssd/sssd.conf:设置id_provider = ad、auth_provider = ad;启用家目录自动创建(create_homedir = True);指定 AD 用户属性映射(如ldap_user_uid_number = uidNumber)以支持 POSIX 权限
修改后务必执行 chmod 600 /etc/sssd/sssd.conf 并重启服务:systemctl restart sssd。
验证与排错常用命令
集成完成后,用这些命令快速确认状态:
-
kinit username@XXX.CORP:获取 Kerberos 票据,成功后运行klist查看有效期 -
id username@XXX.CORP:检查能否解析 AD 用户 UID/GID 和所属组,输出应含uid=10001(username@xxx.corp)类似格式 -
getent passwd username@XXX.CORP:确认 SSSD 能从 AD 拉取用户条目 -
realm list或sssd-ad --status:查看域连接状态和 SSSD 运行情况
常见问题多源于 DNS 解析失败、时间不同步或 Kerberos realm 名称大小写不一致(AD realm 必须全大写,如 XXX.CORP)。


















