将终端加入Active Directory
在Active Directory中,每个用户都被设置为中央数据库中的唯一对象,且仅使用一组凭证。每个计算机系统也会创建独立对象。凭借同一组凭证,用户可自动登录所有工作站。账户变更只需在中央数据库操作一次。通过组和组织单位,可设置并实时更新对不同资源的访问权限。
本节提供将Linux和macOS系统加入Active Directory的指导。
Linux
将Linux系统加入Active Directory的先决条件
要将Linux计算机加入Active Directory(AD)域,需满足若干先决条件。
以下章节详述了必要的先决条件。
示例 :
领域:example.local 域用户:administrator 域IP:11.11.11.11
-
日期时间必须与Active Directory保持一致。
确保计算机与Active Directory时间同步。许多认证错误源于时间差异。
-
虚拟机必须将Active Directory服务器设为DNS。
可通过 应用程序 > 网络 > 选项 > IPv4设置 .
方法:仅自动(DHCP)地址
自动:关闭
DNS服务器:11.11.11.11
DNS: 11.11.11.11
注意
或者您也可以将以下行添加到
/etc/resolv.conf:search example.local nameserver 11.11.11.11
-
确保网络和防火墙已开放Active Directory和Kerberos使用的端口。所需端口见下表:
端口
方向
目标
描述
22, 445 (SSH & SMB)
出站
任意
检测本地网络中的计算机
135 (RPC)
入站
任意
通过中继代理部署
137, 138, 139 (NetBIOS)
入站
任意
通过中继代理部署
53 (DNS)
出站
DNS服务器
内部DNS查询使用
88 (Kerberos)
出站
Active Directory域控制器
Linux计算机的Active Directory集成
389, 636端口(LDAP及LDAPS协议)
出站
Active Directory域控制器
Active Directory集成
-
确保操作系统主机名唯一且不超过15个字符。
-
执行以下命令修改主机名:
# hostnamectl set-hostname <名称>
-
从
/etc/hostname文件中删除旧名称并替换为新名称。注意
CentOS 6系统中需替换旧HOSTNAME值为新值:
# vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=<名称>
-
重启计算机
注意
终端主机名不得包含FQDN部分。
-
-
禁用 Selinux .
修改配置文件中的SELINUX变量值:
/etc/selinux/config以实现禁用。SELINUX=disabled
-
修改
/etc/nsswitch.conf文件。通过添加条目调整
hosts数据库的查询顺序dns在文件:hosts: files dns mdns4_minimal [NOTFOUND=return]
使用PBIS将Linux终端加入Active Directory
要通过PBIS将Linux终端加入Active Directory (AD)域,需遵循以下步骤并满足 通用前提条件 .
示例:
域:example.local 域用户:administrator 域IP:11.11.11.11
重要提示
部分操作系统(Fedora31、CentOS8)需安装
libsnsl
软件包。
如何离线安装PBIS-Open
-
从
.sh下载最新 此处 并执行以下命令:-
适用于Ubuntu、Debian。
-
x64架构
# wget https://github.com/BeyondTrust/pbis-open/releases/download/9.1.0/pbis-open-9.1.0.551.linux.x86_64.deb.sh # chmod +x pbis-open-9.1.0.551.linux.x86_64.deb.sh # sudo ./pbis-open-9.1.0.551.linux.x86_64.deb.sh # apt-get install ssh # sudo apt-get remove avahi-daemon
-
x86架构
# wget https://github.com/BeyondTrust/pbis-open/releases/download/9.1.0/pbis-open-9.1.0.551.linux.x86.deb.sh # chmod +x pbis-open-9.1.0.551.linux.x86.deb.sh # sudo ./pbis-open-9.1.0.551.linux.x86.deb.sh # apt-get install ssh # sudo apt-get remove avahi-daemon
-
-
适用于CentOS、Fedora、OracleLinux7、RHEL、SUSE。
-
x64架构
# wget https://github.com/BeyondTrust/pbis-open/releases/download/9.1.0/pbis-open-9.1.0.551.linux.x86_64.rpm.sh # chmod +x pbis-open-9.1.0.551.linux.x86_64.rpm.sh # sudo ./pbis-open-9.1.0.551.linux.x86_64.rpm.sh
-
x86架构
# wget https://github.com/BeyondTrust/pbis-open/releases/download/9.1.0/pbis-open-9.1.0.551.linux.x86.rpm.sh # chmod +x pbis-open-9.1.0.551.linux.x86.rpm.sh # sudo ./pbis-open-9.1.0.551.linux.x86.rpm.sh
-
-
-
加入Active Directory域。
# cd /opt/pbis/bin/ # sudo domainjoin-cli join example.local administrator
注意
验证
./pbis-open*.sh的输出并检查可能的错误。 -
检查域连接状态。
# sudo domainjoin-cli query
使用SSSD将Linux终端加入Active Directory
本节适用于以下操作系统:
为CentOS6使用SSSD加入Active Directory
要使用SSSD将Linux终端加入Active Directory(AD)域,需遵循以下步骤并满足 通用先决条件 .
示例:
域:example.local 域用户:administrator 域IP:11.11.11.11
-
成功将CentOS6加入Active Directory需安装以下软件包:
# yum install adcli krb5-workstation sssd pam_krb5
-
通过以下命令更改认证提供方:
# authconfig \ --enablekrb5 \ --krb5kdc=example.local \ --krb5adminserver=example.local \ --krb5realm=EXAMPLE.LOCAL \ --enablesssd \ --enablesssdauth \ --update
-
运行以下命令加入Active Directory:
adcli join example.local -v
-
通过创建旧文件备份来配置
sssd.conf/etc/sssd/sssd.conf并用以下内容覆盖原文件:[sssd] 域 = example.local 配置文件版本 = 2 服务 = nss, pam [域/example.local] ad域 = example.local krb5域 = EXAMPLE.LOCAL 域标签 = 管理系统 通过samba加入 缓存凭证 = True 身份提供者 = ad 离线时存储krb5密码 = True 默认shell = /bin/bash ldap ID映射 = True 使用完全限定名称 = False 回退主目录 = /home/%d/%u 访问提供者 = ad
将文件权限设置为
600.# chmod 600 /etc/sssd/sssd.conf # service sssd start # chkconfig sssd on
-
配置
krb5.conf文件时,先备份旧的/etc/krb5.conf并用以下内容覆盖:[默认库] 默认域 = EXAMPLE.LOCAL DNS查找KDC = true 可转发 = true 默认凭证缓存 = FILE:/tmp/krb5cc_%{uid} [域] EXAMPLE.LOCAL = { 管理服务器 = EXAMPLE.LOCAL #KDC = dc1.EXAMPLE.LOCAL #KDC = dc2.EXAMPLE.LOCAL } [日志] KDC = FILE:/var/log/krb5/krb5kdc.log 管理服务器 = FILE:/var/log/krb5/kadmind.log 默认 = SYSLOG:NOTICE:DAEMON [域映射] .EXAMPLE.LOCAL = EXAMPLE.LOCAL EXAMPLE.LOCAL = EXAMPLE.LOCAL -
通过运行以下命令检查域连接并确保一切正常:
# dig -t SRV _ldap._tcp.example.local
# dig -t SRV _ldap._tcp.dc._msdcs.example.local
# adcli info example.local
# id administrator
使用SSSD将Linux终端加入Active Directory(适用于CentOS7/8、Fedora31、RHEL7/8、OracleLinux7)
要使用SSSD将Linux终端加入Active Directory(AD)域,需遵循以下步骤并满足 通用前提条件 .
示例:
域:example.local 域用户:administrator 域IP:11.11.11.11
-
安装必要软件包:
-
Centos7/8、Fedora31和RHEL8需要以下软件包:
# yum install adcli krb5-workstation realmd sssd
-
Oracle Linux7和RHEL7需要以下软件包:
# yum install samba-common-tools realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation
-
-
运行以下命令加入Active Directory域。
# realm join example.local -U administrator
-
通过运行以下命令检查域连接状态。
# dig -t SRV _ldap._tcp.example.local
# dig -t SRV _ldap._tcp.dc._msdcs.example.local
# realm discover example.local
# realm list
使用SSSD将Ubuntu/Debian系统的Linux终端加入Active Directory
要通过SSSD将Linux终端加入Active Directory(AD)域,需遵循以下步骤并满足 通用前提条件 .
示例:
域:example.local 域用户:administrator 域IP:11.11.11.11
-
安装必要软件包。
# sudo apt install sssd-ad sssd-tools realmd adcli
注意
Ubuntu14系统需额外安装软件包。
# sudo apt-get install packagekit
-
运行以下命令加入Active Directory域。
# sudo realm -v join example.local
-
通过运行以下命令检查域连接状态。
# dig -t SRV _ldap._tcp.example.local # dig -t SRV _ldap._tcp.dc._msdcs.example.local # sudo realm -v discover example.local # realm list
使用SSSD将SUSE Linux Enterprise 12/15系统的Linux终端加入Active Directory
要通过SSSD将SUSE系统的Linux终端加入Active Directory(AD)域,需遵循以下步骤并满足 通用前提条件 .
示例:
域:example.local 域用户:administrator 域IP: 11.11.11.11
-
安装必要软件包。
-
安装
krb5-client.# zypper in krb5-client
-
安装以下软件包。
# zypper in adcli sssd sssd-ldap sssd-ad sssd-tools
-
-
备份旧的
/etc/krb5.conf并用以下内容覆盖:[libdefaults] default_realm = EXAMPLE.LOCAL dns_lookup_kdc = true forwardable = true default_ccache_name = FILE:/tmp/krb5cc_%{uid} [realms] EXAMPLE.LOCAL = { admin_server = EXAMPLE.LOCAL #kdc = dc1.EXAMPLE.LOCAL #kdc = dc2.EXAMPLE.LOCAL } [logging] kdc = FILE:/var/log/krb5/krb5kdc.log admin_server = FILE:/var/log/krb5/kadmind.log default = SYSLOG:NOTICE:DAEMON [domain_realm] .EXAMPLE.LOCAL = EXAMPLE.LOCAL EXAMPLE.LOCAL = EXAMPLE.LOCAL -
配置
sssd.conf文件,先备份旧的/etc/sssd/sssd.conf并用以下内容覆盖:[sssd] config_file_version = 2 services = nss,pam domains = example.local [nss] filter_users = root filter_groups = root [pam] [domain/example.local] id_provider = ad auth_provider = ad ad_domain = example.local cache_credentials = true enumerate = false override_homedir = /home/%d/%u ldap_id_mapping = true ldap_referrals = false ldap_schema = ad
将文件权限设置为
600.# chmod 600 /etc/sssd/sssd.conf
-
配置
nsswitch.conf文件passwd: compat sss group: compat sss
-
运行以下命令加入Active Directory域:
# adcli join -D example.local
-
启用并启动
sssd守护进程。# systemctl enable sssd # systemctl start sssd
-
配置LDAP客户端
-
安装必要的软件包。
# zypper 安装 openldap2-client cyrus-sasl-gssapi
-
将以下内容添加到
/etc/openldap/ldap.conf.URI ldap://example.local BASE dc=example,dc=local REFERRALS OFF
-
-
通过执行以下命令检查域连接性:
# ldapsearch -Y GSSAPI cn=Administrator # adcli info example.local # id administrator # getent passwd administrator
使用Winbind将Linux终端加入Active Directory
本节涵盖以下操作系统的配置指南:
在CentOS6/RHEL7上使用Winbind加入Active Directory
要通过Winbind将Linux终端加入Active Directory(AD)域,需遵循以下步骤并满足 通用先决条件 .
示例:
域:example.local 域用户:administrator 域IP:11.11.11.11
-
安装必要软件包。
# yum -y 安装 samba4-winbind samba4-winbind-clients pam_krb5 krb5-libs
-
执行以下命令更改认证提供方:
# authconfig \ --enablekrb5 \ --krb5kdc=example.local \ --krb5adminserver=example.local \ --krb5realm=EXAMPLE.LOCAL \ --enablewinbind \ --enablewinbindauth \ --smbsecurity=ads \ --smbrealm=EXAMPLE.LOCAL \ --smbservers=example.local \ --smbworkgroup=example\ --winbindtemplatehomedir=/home/%U \ --winbindtemplateshell=/bin/bash \ --enablemkhomedir \ --enablewinbindusedefaultdomain \ --update
-
配置
nsswitch.conf文件,在/etc/nsswitch.conf文件中启用以下参数:passwd: compat winbind group: compat winbind
-
加入Active Directory域。
-
创建Kerberos密钥表文件:
# sudo net ads keytab create -U administrator
-
启动Winbind服务
# service winbind start # chkconfig winbind on
-
运行以下命令
# net ads join -U administrator -v 输入administrator的密码: 使用短域名 -- EXAMPLE 已将'Ubuntu20-VM'加入DNS域'example.local' 未为Ubuntu20-VM配置DNS域。无法执行DNS更新。 DNS更新失败!
重要提示
即使上述消息显示DNS更新失败,请注意DNS已正确更新,您应忽略此错误信息。
-
-
通过运行以下命令检查域连接:
# wbinfo -u
使用Winbind将Linux终端加入Active Directory(适用于CentOS7/8、Fedora31、RHEL8、OracleLinux7)
要使用Winbind将Linux终端加入Active Directory(AD)域,您需要按照以下步骤操作,并同时满足 通用前提条件 .
示例:
域:example.local 域用户:administrator 域IP: 11.11.11.11
-
安装必要的软件包。
# yum install samba samba-client samba-winbind samba-winbind-client
-
配置
smb.conf文件。备份旧的
/etc/samba/smb.conf并用以下内容覆盖:[global] workgroup = EXAMPLE realm = EXAMPLE.LOCAL security = ads idmap config * : backend = autorid idmap config * : range = 100000-19999999 idmap config * : rangesize = 1000000 template homedir = /home/%D/%U template shell = /bin/bash winbind use default domain = false winbind offline logon = true log file = /var/log/samba/log.%m max log size = 50 log level = 0 kerberos method = secrets and keytab -
加入Active Directory域。
-
创建Kerberos
krb5.keytab文件:# sudo net ads keytab create -U administrator
-
启用Winbind服务。
# systemctl enable winbind --now
-
运行以下命令。
# net ads join -U Administrator --no-dns-updates example.local
-
-
通过运行以下命令检查域连接状态。
# host -t SRV _kerberos._udp.example.local # host -t SRV _kerberos._tcp.example.local # testparm # wbinfo -u # wbinfo -g
使用Winbind将Linux终端加入Active Directory(SUSE Linux Enterprise 12,15版)
要通过Winbind将Linux终端加入Active Directory(AD)域(SUSE系统),需遵循以下步骤并满足 通用先决条件 .
示例:
域:example.local 域用户:administrator 域IP:11.11.11.11
-
安装必要软件包。
-
安装
krb5客户端。# zypper in krb5-client
-
-
配置Kerberos客户端。
备份旧版
/etc/krb5.conf并用以下内容覆盖:[libdefaults] default_realm = EXAMPLE.LOCAL dns_lookup_kdc = true forwardable = true default_ccache_name = FILE:/tmp/krb5cc_%{uid} [realms] EXAMPLE.LOCAL = { admin_server = EXAMPLE.LOCAL #kdc = dc1.EXAMPLE.LOCAL #kdc = dc2.EXAMPLE.LOCAL } [logging] kdc = FILE:/var/log/krb5/krb5kdc.log admin_server = FILE:/var/log/krb5/kadmind.log default = SYSLOG:NOTICE:DAEMON [domain_realm] .EXAMPLE.LOCAL = EXAMPLE.LOCAL EXAMPLE.LOCAL = EXAMPLE.LOCAL -
安装以下软件包:
# zypper in samba-client samba-libs samba-winbind
-
配置
smb.conf文件。-
备份旧版
/etc/samba/smb.conf并用以下内容覆盖:[全局] 工作组 = EXAMPLE Kerberos方法 = secrets and keytab 领域 = EXAMPLE.LOCAL 安全 = ADS winbind刷新票据 = 是 winbind使用默认域 = 是 模板shell = /bin/bash 模板主目录 = /home/%D/%U idmap配置 * : 后端 = tdb idmap配置 * : 范围 = 10000-19999 idmap配置 EXAMPLE: 后端 = rid idmap配置 EXAMPLE: 范围 = 20000-29999 -
将文件权限设置为
600.# chmod 600 /etc/samba/smb.conf
-
-
配置
nsswitch.conf文件。在
/etc/nsswitch.conf文件中启用参数:passwd: compat winbind group: compat winbind
-
通过运行以下命令建立与Kerberos的连接。
# kinit Administrator
-
通过运行以下命令加入Active Directory域。
#net ads join -U Administrator
-
通过运行以下命令启用并启动Winbind守护进程。
# systemctl enable winbind # systemctl start winbind
-
配置LDAP客户端。
-
安装必要的软件包。
zypper in openldap2-client cyrus-sasl-gssapi
-
将以下行添加到
/etc/openldap/ldap.conf.URI ldap://example.local BASE dc=example,dc=local REFERRALS OFF
-
-
通过运行以下命令检查域连接性。
# ldapsearch -Y GSSAPI cn=Administrator # net ads info # id administrator # getent passwd administrator
使用Winbind将Linux终端加入Active Directory(适用于Ubuntu、Debian)
要使用Winbind将Linux终端加入Active Directory(AD)域,您需要按照以下步骤操作,并同时遵守 通用前提条件 .
示例:
域:example.local 域用户:administrator 域IP:11.11.11.11
-
安装以下软件包。
# sudo apt install samba krb5-config krb5-user winbind libpam-winbind libnss-winbind
使用全大写字母输入域名:
将Kerberos服务器字段留空。
将Kerberos域的管理服务器字段留空。
-
配置 PAM 通过运行以下命令并启用“ 登录时创建主目录 ”.
# sudo pam-auth-update
重要提示
此命令不适用于Debian和Ubuntu14系统。
-
配置
nsswitch.conf文件并在/etc/nsswitch.conf文件中启用参数。passwd: compat winbind group: compat winbind
-
配置
smb.conf文件。-
备份旧版
/etc/samba/smb.conf并用以下内容覆盖:[global] workgroup = EXAMPLE security = ads realm = EXAMPLE.LOCAL encrypt passwords = yes winbind use default domain = yes winbind refresh tickets = true template homedir = /home/%D/%U template shell = /bin/bash kerberos method = secrets and keytab
-
重启samba服务。
# systemctl restart smbd.service
-
-
配置
krb5.conf文件。先备份旧的/etc/krb5.conf文件并将其内容替换为:[libdefaults] default_realm = EXAMPLE.LOCAL dns_lookup_realm = true dns_lookup_kdc = true dns_fallback = yes [realms] EXAMPLE.LOCAL = { kdc = example.local default_domain = example.local } [domain_realm] .EXAMPLE.LOCAL = EXAMPLE.LOCAL EXAMPLE.LOCAL = EXAMPLE.LOCAL -
加入Active Directory域。
-
初始化Kerberos票据并验证。
# sudo kinit administrator
-
创建Kerberos密钥表文件。
# sudo net ads keytab create -U administrator
-
将计算机加入Active Directory:
# sudo net ads join -U administrator
-
重启samba服务。
# systemctl restart smbd.service
-
-
运行以下命令检查域连接状态:
# wbinfo -u # wbinfo -g # getent passwd # getent group # wbinfo -i administrator
注意
DNS更新失败:NT_STATUS_INVALID_PARAMETER
并非错误。
计算机已成功加入Active Directory。
故障排除
本节包含以下内容的指导:
PBIS Active Directory域加入过程故障排除
本节列出PBIS Active Directory域加入过程中可能遇到的错误。
示例:
域: example.local 域用户: administrator 域IP: 11.11.11.11
错误: ERROR_GEN_FAILURE [代码 0x0000001f]
该
domainjoin-cli
命令可能因存在
avahi-daemon
包而失败。
# domainjoin-cli join example.local administrator 加入AD域: example.local 计算机DNS名称: user.example.local administrator@EXAMPLE.LOCAL的密码: 错误: ERROR_GEN_FAILURE [代码 0x0000001f]
解决方案
-
移除
avahi-daemon包# sudo apt-get remove avahi-daemon
错误: 无效主机名 [代码 0x000004ba]
该
domainjoin-cli
命令可能因主机名配置错误而失败。
# cd /opt/pbis/bin/ # sudo domainjoin-cli join example.local administrator 错误: 无效主机名 [代码 0x000004ba] 主机名不能为'linux'或'localhost'。
解决方案
-
通过运行以下命令更改主机名:
# hostnamectl set-hostname <名称>
-
从
/etc/hostname中删除旧名称并替换为新名称。 -
从
/etc/hosts. -
重启端点。
错误: 模块未配置 [代码 0x000003eb]
该
domainjoin-cli
命令可能因主机名配置错误而执行失败。
# cd /opt/pbis/bin/ # sudo domainjoin-cli join example.local administrator 正在加入AD域: example.local 计算机DNS名称: bdvm-c6x64.example.local administrator@EXAMPLE.LOCAL的密码: 错误: 模块未配置 [代码 0x000003eb] 尽管已执行'hostname'配置,但配置尚未完成。请联系技术支持。
解决方案
-
通过运行以下命令更改主机名:
# hostnamectl set-hostname <名称>
-
从
etc/hostname中删除旧名称并替换为新名称。 -
将所有出现的端点名称从
/etc/hosts. -
重启端点。
错误: BeyondTrust AD Bridge Open需要库文件libnsl.so.1;请在安装AD Bridge前先安装libnsl.so.1。
执行
.sh
文件可能因缺少
libnsl.so.1
库而失败。
# ./pbis-open-9.1.0.551.linux.x86_64.rpm.sh 创建目录 pbis-open-9.1.0.551.linux.x86_64.rpm 验证归档完整性... 全部正常。 解压 pbis-open-9.1.0.551.linux.x86_64.rpm.......... 正在安装软件包,旧包将被移除 警告: /home/pbis-open-9.1.0.551.linux.x86_64.rpm/./packages/pbis-open-upgrade-9.1.0-551.x86_64.rpm: 头V3 DSA/SHA1签名,密钥ID c9ceecef: NOKEY 验证中... ################################# [100%] 准备中... ################################# [100%] 更新/安装中... 1:pbis-open-upgrade-9.1.0-551 ################################# [100%] 警告: /home/pbis-open-9.1.0.551.linux.x86_64.rpm/./packages/pbis-open-9.1.0-551.x86_64.rpm: 头V3 DSA/SHA1签名,密钥ID c9ceecef: NOKEY 验证中... ################################# [100%] 准备中... ################################# [100%] BeyondTrust AD Bridge Open需要库文件libnsl.so.1;请在安装AD Bridge前先安装libnsl.so.1。 错误: %prein(pbis-open-9.1.0-551.x86_64)脚本执行失败,退出状态1 错误: pbis-open-9.1.0-551.x86_64: 安装失败 安装/home/pbis-open-9.1.0.551.linux.x86_64.rpm/./packages/pbis-open-9.1.0-551.x86_64.rpm时出错 安装未完成。请修正错误后重新运行/home/pbis-open-9.1.0.551.linux.x86_64.rpm/install.sh install进行安装
解决方案
-
安装
libnsl软件包# yum install libnsl
错误: 无法下载'appstream'仓库元数据:无法准备内部镜像列表:镜像列表中没有URL
由于内部镜像列表问题无法安装软件包。
# yum install libnsl CentOS Linux 8 - AppStream 118 B/s | 38 B 00:00 错误: 无法下载'appstream'仓库元数据:无法准备内部镜像列表:镜像列表中没有URL [root@bdvm-c8x64 home]# yum install libnsl CentOS Linux 8 - AppStream 512 B/s | 38 B 00:00 错误: 无法下载'appstream'仓库元数据:无法准备内部镜像列表:镜像列表中没有URL [root@bdvm-c8x64 home]# yum update CentOS Linux 8 - AppStream 437 B/s | 38 B 00:00 错误: 无法下载'appstream'仓库元数据:无法准备内部镜像列表:镜像列表中没有URL
解决方案
-
运行以下命令:
# cd /etc/yum.repos.d/ # sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* # sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* # yum update -y
-
重新安装软件包
错误:查询lwsmd时收到错误。[代码 0x00000002]
由于以下原因无法加入域
错误代码0x00000002
.
# sudo domainjoin-cli join example.local administrator 错误:查询lwsmd时收到错误。[代码 0x00000002] 查询lwsmd时收到错误。
解决方案
-
检查
pbis-open*.sh文件中与SELinux相关的提及。# ./pbis-open-9.1.0.551.linux.x86_64.rpm.sh 创建目录 pbis-open-9.1.0.551.linux.x86_64.rpm 验证归档完整性... 一切正常。 解压 pbis-open-9.1.0.551.linux.x86_64.rpm.......... 安装软件包,旧软件包将被移除 ... SELinux模式:强制 此软件包未包含适当的SELinux策略[/opt/pbis/share/rhel/unknown/pbis.pp]。您可以在/opt/pbis/share/pbis.pp提供策略 检测到SELinux存在、启用且处于强制模式。您可以在/opt/pbis/share/pbis.pp提供策略 --或者-- 必须通过编辑/etc/selinux/config文件并重启来禁用SELinux或将其设置为宽容模式。有关如何编辑文件以禁用SELinux的说明,请参阅SELinux手册页。 没有适当的SELinux策略,BeyondTrust AD Bridge将无法安装。 警告:%post(pbis-open-9.1.0-551.x86_64)脚本执行失败,退出状态1 ...
-
通过运行以下命令检查SELinux状态:
# sestatus SELinux状态: 已启用 SELinuxfs挂载点: /sys/fs/selinux SELinux根目录: /etc/selinux 加载的策略名称: targeted 当前模式: 强制 配置文件中的模式: 强制 策略MLS状态: 已启用 策略deny_unknown状态: 允许 内存保护检查: actual (secure) 内核策略最大版本: 31
-
将配置文件
/etc/selinux/config中的SELINUX变量值修改为禁用。SELINUX=disabled
-
重新运行
pbis-open*.sh命令。
错误:ERROR_BAD_COMMAND [代码 0x00000016]
这不是错误,端点已成功加入。
# /opt/pbis/bin/domainjoin-cli join example.local administrator 正在加入AD域: example.local 计算机DNS名称: bdvm-c8x64.example.local administrator@EXAMPLE.LOCAL的密码: 警告:处理'hostname'模块时发生可恢复错误 ERROR_BAD_COMMAND [代码 0x00000016] 警告:需要系统重启 您的系统已首次配置为向Active Directory进行身份验证。建议重启系统以确保所有应用程序识别新设置。 成功
错误:DNS_ERROR_BAD_PACKET [代码 0x0000251e]
# /opt/pbis/bin/domainjoin-cli join example.local administrator 正在加入AD域: example.local 计算机DNS名称: o7x64tl.example.local administrator@EXAMPLE.LOCAL的密码: 错误:DNS_ERROR_BAD_PACKET [代码 0x0000251e] 从DNS服务器接收到错误数据包。可能请求的地址不存在。
解决方案
-
检查域控制器是否响应ping。
# ping example.local
-
检查DNS是否
计算机是否设置为域控制器的IP地址。 -
检查
hosts数据库的搜索顺序是否为files,然后dns(位于/etc/nsswitch.conf. -
将以下内容添加到
/etc/resolv.conf.search example.local nameserver 11.11.11.11
SSSD域加入过程故障排除
本节列出了SSSD加入Active Directory域过程中可能遇到的错误。
示例:
域:example.local 域用户:administrator 域IP:11.11.11.11
错误:加入域失败:无法通过RPC查找域'example.local'的DC信息:登录尝试无效。可能是由于用户名或认证信息错误。
该错误代码表示用户名或密码不正确。
# realm join example.local -U administrator -v * 解析:_ldap._tcp.example.local * 在11.11.11.11上执行LDAP DSE查找 * 成功发现:example.local 输入administrator的密码: * 所需文件:/usr/sbin/oddjobd, /usr/libexec/oddjob/mkhomedir, /usr/sbin/sssd, /usr/bin/net * LANG=C LOGNAME=root /usr/bin/net -s /var/cache/realmd/realmd-smb-conf.0HT7S1 -U administrator ads join example.local 输入administrator的密码: 加入域失败:无法通过RPC查找域'example.local'的DC信息:登录尝试无效。可能是由于用户名或认证信息错误。 ! 加入域example.local失败 realm: 无法加入域:加入域example.local失败
解决方案
-
重新运行命令并输入正确的凭据。
错误:! 在域中注册计算机失败:GDBus.Error:org.freedesktop.systemd1.UnitMasked: 单元被屏蔽。
该错误代码表示缺少软件包。
# realm join example.local -U administrator -v * 解析:_ldap._tcp.example.local * 在11.11.11.11上执行LDAP DSE查找 * 成功发现:example.local 输入administrator的密码: * 未找到文件:/usr/bin/net * 所需文件:/usr/sbin/oddjobd, /usr/libexec/oddjob/mkhomedir, /usr/sbin/sssd, /usr/bin/net * 解析所需软件包 ! 在域中注册计算机失败:GDBus.Error:org.freedesktop.systemd1.UnitMasked: 单元被屏蔽。 realm: 无法加入域:在域中注册计算机失败。请查看诊断信息。
解决方案
-
运行以下命令:
# yum install samba-common-tools realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation
错误:无结果:example.local
当向Active Directory (AD)执行发现操作时,realm discover命令能解析域但未返回结果。
# sudo realm -v discover example.local sudo: 无法解析主机user-market-2: 连接超时 * 正在解析: _ldap._tcp.example.local * 正在解析: example.local * 无结果: example.local example.local 类型: kerberos 域名: EXAMPLE.LOCAL 域名称: example.local 已配置: 否
解决方案
解决问题步骤:
-
检查虚拟机是否与Active Directory保持日期时间同步。
-
设置与Active Directory相同的时区、日期和时间。
-
检查域控制器是否响应ping请求。
# ping example.local
-
检查
计算机的DNS是否设置为域控制器的IP地址。 -
检查
hosts数据库的files搜索顺序是否为dns在/etc/nsswitch.conf.hosts: files dns mdns4_minimal [NOTFOUND=return]
错误:realm: 未找到该域: example.local
当向Active Directory (AD)执行发现操作时,realm discover命令无法解析域。
# sudo realm -v discover example.local sudo: 无法解析主机user-market-2: 没有那个文件或目录 * 正在解析: _ldap._tcp.example.local * 正在解析: example.local * 无结果: example.local realm: 未找到该域: example.local
解决方案
-
将以下内容添加至
/etc/resolv.conf.search example.local nameserver 11.11.11.11
-
验证
/etc/nsswitch.conf文件中确保hosts数据库在files之后包含dns。hosts: files dns myhostname
-
执行ping命令。
# ping example.local
错误:无法以Administrator@EXAMPLE.LOCAL身份认证:预认证失败
# sudo realm -v join example.local sudo: 无法解析主机user-market-2: 连接超时 * 解析: _ldap._tcp.example.local * 在11.11.11.11上执行LDAP DSE查询 * 成功发现: example.local Administrator密码: * 无条件检查软件包 * 解析所需软件包 * LANG=C /usr/sbin/adcli join --verbose --domain example.local --domain-realm EXAMPLE.LOCAL --domain-controller 11.11.11.--login-type user --login-user Administrator --stdin-password * 使用域名: example.local * 根据FQDN计算计算机账户名: USER-MARKET-2 * 使用域领域: example.local * 向域控制器发送netlogon ping: cldap://11.11.11.11 * 从DC.example.local接收NetLogon信息 * 将krb5.conf片段写入/var/cache/realmd/adcli-krb5-2lGxqJ/krb5.d/adcli-krb5-conf-ophiP9 ! 无法以Administrator@EXAMPLE.LOCAL身份认证:预认证失败 adcli: 无法连接到example.local域: 无法以Administrator@EXAMPLE.LOCAL身份认证:预认证失败 ! 加入域失败 realm: 无法加入领域: 加入域失败
解决方案
-
检查是否输入了正确的管理员账户密码并重新运行命令。
错误:无法在领域注册计算机: 以下软件包存在未满足的依赖关系:
# sudo realm -v join example.local
* 解析: _ldap._tcp.example.local
* 在11.11.11.11上执行LDAP DSE查询
* 成功发现: example.local
* 无条件检查软件包
* 解析所需软件包
* 安装必要软件包: sssd-tools, sssd, libnss-sss, libpam-sss
! 无法在领域注册计算机: 以下软件包存在未满足的依赖关系:
sssd-tools: 依赖: libc6 (>= 2.12) 但将安装2.19-0ubuntu6.15
依赖: libpopt0 (>= 1.14) 但将安装1.16-8ubuntu1
依赖: libselinux1 (>= 1.32) 但将安装2.2.2-1ubuntu0.1
依赖: libsemanage1 (>= 2.0.3) 但将安装2.2-1
依赖: libtalloc2 (>= 2.0.4~git20101213) 但将安装2.1.5-0ubuntu0.14.04.1
依赖: sssd-common (= 1.11.5-1ubuntu3) 但将安装1.11.8-0ubuntu0.7
realm: 无法加入领域: 无法在领域注册计算机。请查看诊断信息。
解决方案
-
运行以下命令更新软件包。
# apt update # sudo apt install sssd-ad sssd-tools realmd adcli
错误:KDC或领域不可达或无法解析地址
此问题出现在尝试使用SSSD将Centos6加入Active Directory时
"错误": [
{
"描述": "无法为keytab文件生成凭据缓存文件: default",
"消息": "KDC或领域不可达或无法解析地址"
}
],
解决方案
-
运行以下命令:
# authconfig \ --enablekrb5 \ --krb5kdc=example.local \ --krb5adminserver=example.local \ --krb5realm=EXAMPLE.LOCAL \ --enablesssd \ --enablesssdauth \ --update
-
检查
krb5.conf文件。其格式应如下:[libdefaults] default_realm = EXAMPLE.LOCAL dns_lookup_kdc = true forwardable = true default_ccache_name = FILE:/tmp/krb5cc_%{uid} [realms] EXAMPLE.LOCAL = { admin_server = EXAMPLE.LOCAL #kdc = dc1.EXAMPLE.LOCAL #kdc = dc2.EXAMPLE.LOCAL } [logging] kdc = FILE:/var/log/krb5/krb5kdc.log admin_server = FILE:/var/log/krb5/kadmind.log default = SYSLOG:NOTICE:DAEMON [domain_realm] .EXAMPLE.LOCAL = EXAMPLE.LOCAL EXAMPLE.LOCAL = EXAMPLE.LOCAL
错误:无法为仓库base找到有效的baseurl
该问题出现在CentOS 6上,原因是操作系统即将终止生命周期
# yum install adcli krb5-workstation sssd Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Install Process Loading mirror speeds from cached hostfile YumRepo Error: All mirror URLs are not using ftp, http[s] or file. Eg. Invalid release/repo/arch combination/ removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt Error: Cannot find a valid baseurl for repo: base
解决方案
-
在
/etc/yum.repos.d/目录下创建新仓库文件并添加以下内容:[C6.10-base] name=CentOS-6.10 - Base baseurl=http://vault.epel.cloud/6.10/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=1 metadata_expire=never [C6.10-updates] name=CentOS-6.10 - Updates baseurl=http://vault.epel.cloud/6.10/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=1 metadata_expire=never [C6.10-extras] name=CentOS-6.10 - Extras baseurl=http://vault.epel.cloud/6.10/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=1 metadata_expire=never [C6.10-contrib] name=CentOS-6.10 - Contrib baseurl=http://vault.epel.cloud/6.10/contrib/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=0 metadata_expire=never [C6.10-centosplus] name=CentOS-6.10 - CentOSPlus baseurl=http://vault.epel.cloud/6.10/centosplus/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled=0 metadata_expire=never
-
更新软件包后重新运行命令:
# yum update # yum install adcli krb5-workstation sssd
错误:adcli: 无法连接域: 无法获取Kerberos票据...时钟偏差过大
当终端节点与Active Directory的日期时间不一致时会出现此问题
# adcli join example.local Password for Administrator@EXAMPLE.LOCAL: adcli: 无法连接example.local域: 无法获取Administrator@EXAMPLE.LOCAL的Kerberos票据: 时钟偏差过大
解决方案
-
将终端节点的时区、日期和时间设置为与Active Directory一致
错误:gss_init_sec_context失败[杂项故障(详见文本): 时钟偏差过大]
当终端节点与Active Directory的日期时间不一致时会出现此问题
# sudo realm -v join example.local * 正在解析: _ldap._tcp.example.local * 在11.11.11.11上执行LDAP DSE查找 * 成功发现: example.local * 无条件检查软件包 * 解析所需软件包 * LANG=C /usr/sbin/adcli join --verbose --domain example.local --domain-realm EXAMPLE.LOCAL --domain-controller 11.11.11.11 --login-type computer --no-password * 使用域名: example.local * 从fqdn计算计算机账户名: BDVMU14X86 * 使用域领域: example.local * 向域控制器发送netlogon ping: cldap://11.11.11.11 * 从DC.example.local接收NetLogon信息 * 将krb5.conf片段写入/var/cache/realmd/adcli-krb5-ffDXAr/krb5.d/adcli-krb5-conf-YCJvaP ! 无法以机器账户身份认证: BDVMU14X86: 在Kerberos数据库中未找到客户端'BDVMU14X86$@EXAMPLE.LOCAL' adcli: 无法连接到example.local域: 无法以机器账户身份认证: BDVMU14X86: 在Kerberos数据库中未找到客户端'BDVMU14X86$@EXAMPLE.LOCAL' ! 无法自动加入域 Administrator密码: * 无条件检查软件包 * 解析所需软件包 * LANG=C LOGNAME=root /usr/bin/net -s /var/cache/realmd/realmd-smb-conf.PF1JS1 -U Administrator ads join example.local 输入Administrator密码:gss_init_sec_context失败,原因[杂项故障(详见文本): 时钟偏差过大] kinit成功但ads_sasl_spnego_gensec_bind(KRB5)失败: 发生内部错误。 加入域失败: 无法连接到AD: 发生内部错误。 ! 加入域example.local失败 realm: 无法加入领域: 加入域example.local失败
解决方案
-
将终端的时间区域、日期和时间设置为与Active Directory相同。
错误: 无法在领域注册机器: GDBus.Error:org.freedesktop.systemd1.UnitMasked: 单元被屏蔽。
该错误是由于缺少软件包导致的。
# realm join example.local -U administrator -v * 正在解析: _ldap._tcp.example.local * 在11.11.11.11上执行LDAP DSE查找 * 成功发现: example.local administrator密码: * 找不到文件: /usr/bin/net * 所需文件: /usr/sbin/oddjobd, /usr/libexec/oddjob/mkhomedir, /usr/sbin/sssd, /usr/bin/net * 解析所需软件包 ! 无法在领域注册机器: GDBus.Error:org.freedesktop.systemd1.UnitMasked: 单元被屏蔽。 realm: 无法加入领域: 无法在领域注册机器。请查看诊断信息。
解决方案
-
通过运行以下命令安装缺失的软件包:
# yum install samba-common-tools realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation
错误: 无法启动System Security Services Daemon status=4 /NOPERMISSION
sssd
服务无法启动,原因是
/etc/sssd/sssd.conf
文件的权限设置不正确。
# systemctl start sssd
sssd.service 任务失败,因为控制进程退出时返回错误代码。
详情请参阅 "systemctl status sssd.service" 和 "journalctl -xe"。
# systemctl status sssd.service
● sssd.service - 系统安全服务守护进程
已加载:已加载(/usr/lib/systemd/system/sssd.service;已启用;供应商预设:禁用)
活动状态:失败(结果:exit-code)自 东欧夏令时 2022-09-21 22:08:34 起;5秒前
进程:9457 ExecStart=/usr/sbin/sssd -i ${DEBUG_LOGGER} (code=exited, status=4)
主进程ID:9457 (code=exited, status=4)
9月21日 22:08:34 slesl15gia systemd[1]: 正在启动系统安全服务守护进程...
9月21日 22:08:34 slesl15gia sssd[9457]: 无法读取配置文件 /etc/sssd/sssd.conf。请确保该文件仅所有者可访问且属主为root.root。
9月21日 22:08:34 slesl15gia systemd[1]: sssd.service: 主进程退出,code=exited, status=4/NOPERMISSION
9月21日 22:08:34 slesl15gia systemd[1]: 启动系统安全服务守护进程失败。
9月21日 22:08:34 slesl15gia systemd[1]: sssd.service: 单元进入失败状态。
9月21日 22:08:34 slesl15gia systemd[1]: sssd.service: 以 'exit-code' 结果失败。
解决方案
-
为
600设置权限/etc/sssd/sssd.conf文件后重新运行启动命令。# chmod 600 /etc/sssd/sssd.conf # systemctl start sssd
错误:adcli: 加入域 example.local 失败:无法查找计算机账户。无法连接LDAP服务器
终端无法连接LDAP服务器。
# adcli join -D example.local -U administrator administrator@EXAMPLE.LOCAL的密码: adcli: 加入域 example.local 失败:无法查找计算机账户:SGIA12$: 无法连接LDAP服务器
解决方案
-
配置LDAP客户端。
# zypper in openldap2-client cyrus-sasl-gssapi
-
将以下内容添加到
/etc/openldap/ldap.conf.URI ldap://example.local BASE dc=example,dc=local REFERRALS OFF
错误:authconfig: 认证模块 /usr/lib64/security/pam_krb5.so 缺失。认证过程可能无法正常工作。
authconfig
命令因缺少so文件而运行失败。
# authconfig \ --enablekrb5 \ --krb5kdc=example.local \ --krb5adminserver=example.local \ --krb5realm=EXAMPLE.LOCAL \ --enablesssd \ --enablesssdauth \ --update authconfig: 认证模块 /usr/lib64/security/pam_krb5.so 缺失。认证过程可能无法正常工作。
解决方案
-
安装缺失的软件包:
# yum install pam5_krb
错误:警告:如果ad_gpo_access_control选项设置为强制执行模式,用户将被拒绝基于GPO的登录访问。
该错误是由于krb5.conf文件配置不完整导致的。
● sssd.service - 系统安全服务守护进程
已加载:已加载(/usr/lib/systemd/system/sssd.service;已启用;供应商预设:禁用)
活动状态:自2022年9月26日星期一12:15:44 EDT起活跃(运行中);2周0天前
主PID:25700(sssd)
任务数:4
CGroup:/system.slice/sssd.service
├─25700 /usr/sbin/sssd -i --logger=files
├─25701 /usr/libexec/sssd/sssd_be --domain yyz.local --uid 0 --gid 0 --logger=files
├─25702 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files
└─25703 /usr/libexec/sssd/sssd_pam --uid 0 --gid 0 --logger=files
10月11日 10:32:59 10-10-192-49.yyz.local sssd[be[yyz.local]][25701]:识别名(DN)为[cn={8F655C32-3704-42C7-9BAD-5CC2C1A3AE55},cn=policies,cn=system,DC=yyz,DC=local]的组策略容器不可读或存在不可读/缺失属性。修复此问题需确保该AD对象具有以下可读属性:nTSecurityDescriptor、cn、gPCFileSysPath、gPCMachineExtensionNames、gPCFunctionalityVersion、flags。若您无服务器访问权限或无法修改该对象权限,可使用选项ad_gpo_ignore_unreadable = True跳过此GPO。详见'man ad_gpo_ignore_unreadable'。
10月11日 10:32:59 10-10-192-49.yyz.local sssd[be[yyz.local]][25701]:警告:若ad_gpo_access_control选项设置为强制执行模式,用户将被拒绝基于GPO的登录访问。
10月11日 10:36:35 10-10-192-49.yyz.local sssd_be[25701]:GSSAPI客户端步骤1
10月11日 10:36:35 10-10-192-49.yyz.local sssd_be[25701]:GSSAPI客户端步骤1
10月11日 10:36:35 10-10-192-49.yyz.local sssd_be[25701]:GSSAPI客户端步骤1
10月11日 10:36:35 10-10-192-49.yyz.local sssd_be[25701]:GSSAPI客户端步骤2
10月11日 10:40:31 10-10-192-49.yyz.local sssd[be[yyz.local]][25701]:识别名(DN)为[cn={8F655C32-3704-42C7-9BAD-5CC2C1A3AE55},cn=policies,cn=system,DC=yyz,DC=local]的组策略容器不可读或存在不可读/缺失属性。(内容与前述相同,此处省略重复翻译)
10月11日 10:40:31 10-10-192-49.yyz.local sssd[be[yyz.local]][25701]:警告:(内容与前述相同,此处省略重复翻译)
10月11日 10:40:54 10-10-192-49.yyz.local sssd[be[yyz.local]][25701]:识别名(DN)为[cn={8F655C32-3704-42C7-9BAD-5CC2C1A3AE55},cn=policies,cn=system,DC=yyz,DC=local]的组策略容器不可读或存在不可读/缺失属性。(内容与前述相同,此处省略重复翻译)
10月11日 10:40:54 10-10-192-49.yyz.local sssd[be[yyz.local]][25701]:警告:(内容与前述相同,此处省略重复翻译)
解决方法
-
检查
krb5.conf文件是否包含[realms]配置如下:[libdefaults] default_realm = EXAMPLE.LOCAL dns_lookup_realm = true dns_lookup_kdc = true dns_fallback = yes [realms] EXAMPLE.LOCAL = { kdc = example.local default_domain = example.local } [domain_realm] .EXAMPLE.LOCAL = EXAMPLE.LOCAL EXAMPLE.LOCAL = EXAMPLE.LOCAL
错误:kadmin: 初始化kadmin接口时,krb5.conf缺少kadmin客户端所需参数
该错误是由于
krb5.conf
文件配置不完整导致的。
# kadmin list_principals kadmin: 初始化kadmin接口时,krb5.conf缺少kadmin客户端所需参数
解决方法
-
检查
krb5.conf文件是否包含[realms]配置如下:[libdefaults] default_realm = EXAMPLE.LOCAL dns_lookup_realm = true dns_lookup_kdc = true dns_fallback = yes [realms] EXAMPLE.LOCAL = { kdc = example.local default_domain = example.local } [domain_realm] .EXAMPLE.LOCAL = EXAMPLE.LOCAL EXAMPLE.LOCAL = EXAMPLE.LOCAL -
检查主机名是否已被使用。
-
检查Active Directory中是否禁用了该终端。
错误:GSSAPI错误:未指定的GSS故障。次要代码可能提供更多信息(在Kerberos数据库中未找到服务器)
该错误是由于
rdns
参数缺失于
krb5.conf
.
------------------------ldapsearch -Y GSSAPI cn=Administrator---------------------------------
● sssd.service - 系统安全服务守护进程
已加载:已加载(/usr/lib/systemd/system/sssd.service;已启用;供应商预设:禁用)
活动:自2022年10月11日星期二16:43:20 EDT起活动(运行)1分30秒
主PID:1923(sssd)
任务:4
CGroup:/system.slice/sssd.service
├─1923 /usr/sbin/sssd -i --logger=files
├─1963 /usr/libexec/sssd/sssd_be --domain yyz.local --uid 0 --gid 0 --logger=files
├─1967 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files
└─1968 /usr/libexec/sssd/sssd_pam --uid 0 --gid 0 --logger=files
10月11日16:43:32 10-10-192-49.yyz.local sssd_be[1963]: GSSAPI客户端步骤1
10月11日16:43:32 10-10-192-49.yyz.local sssd_be[1963]: GSSAPI客户端步骤1
10月11日16:43:32 10-10-192-49.yyz.local sssd[be[yyz.local]][1963]: GSSAPI错误:未指定的GSS故障。次要代码可能提供更多信息(在Kerberos数据库中未找到服务器)
10月11日16:43:32 10-10-192-49.yyz.local sssd[nss][1967]: 请求枚举但未启用
10月11日16:43:36 10-10-192-49.yyz.local sssd_be[1963]: GSSAPI客户端步骤1
10月11日16:43:36 10-10-192-49.yyz.local sssd_be[1963]: GSSAPI客户端步骤1
10月11日16:43:36 10-10-192-49.yyz.local sssd[be[yyz.local]][1963]: GSSAPI错误:未指定的GSS故障。次要代码可能提供更多信息(在Kerberos数据库中未找到服务器)
10月11日16:43:36 10-10-192-49.yyz.local sssd_be[1963]: GSSAPI客户端步骤1
10月11日16:43:36 10-10-192-49.yyz.local sssd_be[1963]: GSSAPI客户端步骤1
10月11日16:43:36 10-10-192-49.yyz.local sssd[be[yyz.local]][1963]: GSSAPI错误:未指定的GSS故障。次要代码可能提供更多信息(在Kerberos数据库中未找到服务器)
解决方法
-
添加
rnds=false到krb5.conf文件[libdefaults] 默认领域 = EXAMPLE.LOCAL DNS查找领域 = true DNS查找KDC = true DNS回退 = 是 rdns = false [realms] EXAMPLE.LOCAL = { KDC = example.local 默认域 = example.local } [domain_realm] .EXAMPLE.LOCAL = EXAMPLE.LOCAL EXAMPLE.LOCAL = EXAMPLE.LOCAL
Winbind域加入过程故障排除
本节列出了Winbind加入Active Directory域过程中可能遇到的错误。
示例:
领域:example.local 域用户:administrator 域IP:11.11.11.11
错误:无法为密钥表文件生成凭据缓存文件:default
终端主机名最多只能包含15个字符。
# net ads join -U administrator 我们的NetBIOS名称最多15个字符,"MAC-00-50-56-A9-06-E1"有21个字符 配置无效。正在退出... 加入域失败:指定的计算机名称格式无效。
解决方案
-
更改主机名。
错误:未为suse15-user配置DNS域。无法执行DNS更新。
加入Active Directory时,net命令有时无法更新DNS。
# net ads join -U administrator 输入administrator的密码: 使用短域名 -- EXAMPLE 已将'SUSE15-USER'加入DNS域'example.local' 未为suse15-user配置DNS域。无法执行DNS更新。 DNS更新失败:NT_STATUS_INVALID_PARAMETER
解决方案
-
将机器的IP和FQDN添加到
etc/hosts文件中。12.12.12.12 suse15-name.example.local suse15-name
-
重新运行命令。
-
或者您可以使用
--no-dns-update参数运行命令。
错误:指定的计算机名称格式无效。
当主机名超过15个字符时会出现此问题。
# net ads join -U administrator 我们的NetBIOS名称最多15个字符,"MAC-XX-XX-XX-XX-XX-XX"有21个字符 配置无效。正在退出... 加入域失败:指定的计算机名称格式无效。
解决方案
-
通过运行以下命令更改主机名。
# systemctl set-hostname <名称>
-
从
/etc/hostname中删除旧名称并替换为新名称。 -
将所有出现的端点名称从
/etc/hosts. -
重启端点设备。
错误:未配置DNS域。无法执行DNS更新
加入Active Directory时,有时
net
命令无法更新DNS。
# net ads join -U administrator 输入管理员密码: 使用短域名 -- SAMDOM 已将'AD-Member'加入DNS域'samdom.example.com' 未为AD-Member配置DNS域。无法执行DNS更新。 DNS更新失败:NT_STATUS_INVALID_PARAMETER
解决方案
-
将机器的IP和FQDN添加到
/etc/hosts文件中。12.12.12.12 AD-Member.samdom.example.com AD-Member
-
重新运行命令。
-
或者可以使用
--no-dns-update参数运行命令。
错误:E: 软件包'krb5-config'没有可安装候选
无法安装
krb5-config
软件包。
# sudo apt install samba krb5-config krb5-user winbind libpam-winbind libnss-winbind
读取软件包列表... 完成
构建依赖树
读取状态信息... 完成
软件包krb5-config不可用,但被另一个软件包引用。
这可能意味着该软件包缺失、已被废弃,或
只能从其他来源获取
E: 软件包'krb5-config'没有可安装候选
# sudo apt install samba krb5-user winbind libpam-winbind libnss-winbind
读取软件包列表... 完成
构建依赖树
读取状态信息... 完成
无法安装某些软件包。这可能意味着您要求了
一个不可能的情况,或者您正在使用不稳定的
发行版,某些必需的软件包尚未创建
或尚未移入Incoming。
以下信息可能有助于解决问题:
下列软件包有未满足的依赖关系:
krb5-user : 依赖: krb5-config 但无法安装
samba : 依赖: python-dnspython 但无法安装
依赖: python-samba 但不会被安装
依赖: samba-common-bin (= 2:4.5.16+dfsg-1+deb9u4) 但不会被安装
依赖: tdb-tools 但无法安装
推荐: attr 但无法安装
推荐: samba-dsdb-modules 但不会被安装
推荐: samba-vfs-modules 但不会被安装
winbind : 依赖: samba-common-bin (= 2:4.5.16+dfsg-1+deb9u4) 但不会被安装
E: 无法修正问题,您持有的软件包存在未满足的依赖关系。
解决方案
-
取消注释以
#deb在/etc/apt/sources.list文件中。 -
更新软件仓库并重新运行命令。
# apt update # sudo apt install samba krb5-config krb5-user winbind libpam-winbind libnss-winbind
错误:ads_keytab_open: 设置的kerberos方法无效(0)
该问题是由于
smb.conf
文件中缺少相关配置节导致。
# sudo net ads keytab create -U administrator 警告:必须将"kerberos method"设置为keytab方法才能使用keytab功能。 输入administrator密码: ads_keytab_open: 设置的kerberos方法无效(0)
解决方案
-
将以下行添加到
/etc/samba/smb.conf文件:kerberos method = secrets and keytab
-
再次重新运行命令。
错误:无法获取winbind接口详情:WBC_ERR_WINBIND_NOT_AVAILABLE
测试命令失败。
# wbinfo -t 无法获取winbind接口详情:WBC_ERR_WINBIND_NOT_AVAILABLE 无法获取winbind域名! 通过RPC调用检查(null)域的信任密钥失败 调用wbcCheckTrustCredentials失败:WBC_ERR_WINBIND_NOT_AVAILABLE 无法检查密钥 [root@fedgia samba]# wbinfo -u 无法获取winbind接口详情:WBC_ERR_WINBIND_NOT_AVAILABLE 无法获取winbind域名! 查找域用户时出错 [root@fedgia samba]# wbinfo -g 无法获取winbind接口详情:WBC_ERR_WINBIND_NOT_AVAILABLE 无法获取winbind域名! 调用wbcListGroups失败:WBC_ERR_WINBIND_NOT_AVAILABLE 查找域组时出错
解决方案
-
运行以下命令。
# systemctl enable winbind --now
-
再次重新运行命令。
错误:加入域失败:通过rpc查找域'EXAMPLE.LOCAL'的DC信息失败:NT_STATUS_CONNECTION_RESET
加入命令失败并返回错误NT_STATUS_CONNECTION_RESET。
# net ads join -U Administrator 输入Administrator密码: 加入域失败:通过rpc查找域'EXAMPLE.LOCAL'的DC信息失败:NT_STATUS_CONNECTION_RESET
解决方案
-
在Active Directory上安装SMBv1。前往 服务器管理器 → 仪表板 → 启动“删除角色和功能”向导 → 功能 → SMB 1.0/CIFS 文件共享支持 .
-
重新运行命令。
错误:DNS更新失败!
这并非问题。终端已成功加入Active Directory。
# net ads join -U Administrator 输入Administrator的密码: 使用短域名——EXAMPLE 已将'|USER-USER3'加入DNS域'example.local' 未为用户-user3配置DNS域。无法执行DNS更新。 DNS更新失败!
错误:net命令无法连接到127.0.0.1 IP地址
默认设置下,
net
命令会连接到127.0.0.1 IP地址。若Samba未监听环回接口,连接将失败。例如:
# net rpc rights list -U administrator 输入administrator的密码: 无法连接到服务器127.0.0.1 连接失败:NT_STATUS_CONNECTION_REFUSED
解决方法
-
在
/etc/samba/smb.conf文件的[global]部分添加以下参数:bind interfaces only = yes interfaces = lo eth0
-
重启Samba服务。
-
向net命令传递
-IIP地址或-S主机名参数。
错误:getent未找到域用户和组
有时getent passwd或getent group不显示任何内容。
# getent passwd # getent group
解决方案
-
将以下参数添加到
[global]部分的/etc/samba/smb.conf文件中:
winbind enum users = yes winbind enum groups = yes
注意
这些设置会降低性能,因此仅建议在测试时添加。
错误:DNS更新失败:ERROR_DNS_GSS_ERROR
加入Active Directory时,由于AD上Kerberos配置错误,net命令可能因ERROR_DNS_GSS_ERROR而失败。
# net ads join -U administrator 输入administrator密码: 使用短域名——SAMDOM 已将'AD-Member'加入DNS域'samdom.example.com' AD-Member.samdom.example.com的DNS更新失败:ERROR_DNS_GSS_ERROR DNS更新失败:NT_STATUS_UNSUCCESSFUL
解决方案
-
运行自动重新配置:
# samba_upgradedns --dns-backend=BIND9_DLZ 正在读取域信息 DNS账户已存在 未找到区域文件/usr/local/samba/private/dns/SAMDOM.EXAMPLE.COM.zone 将自动创建DNS记录 DNS分区已存在 dns-DC1账户已存在 BIND配置示例文件请参见/usr/local/samba/private/named.conf 安全DNS更新所需文档请参见/usr/local/samba/private/named.txt DNS升级完成
-
重启BIND服务。
错误:加入域失败:无效配置("workgroup"设置为'EXAMPLE.LOCAL',应为'EXAMPLE')且未请求配置修改
加入命令失败的原因是
authconfig
运行不正确。
# net ads join -U Administrator 输入Administrator密码: 加入域失败:无效配置("workgroup"设置为'EXAMPLE.LOCAL',应为'EXAMPLE')且未请求配置修改
解决方案
-
正确运行以下命令:
# authconfig \ --enablekrb5 \ --krb5kdc=example.local \ --krb5adminserver=example.local \ --krb5realm=EXAMPLE.LOCAL \ --enablewinbind \ --enablewinbindauth \ --smbsecurity=ads \ --smbrealm=EXAMPLE.LOCAL \ --smbservers=example.local \ --smbworkgroup=example\ --winbindtemplatehomedir=/home/%U \ --winbindtemplateshell=/bin/bash \ --enablemkhomedir \ --enablewinbindusedefaultdomain \ --update
错误:winbind.service:主进程退出,代码=exited,状态=1/FAILURE
启动Winbind服务失败。
# service winbind status
重定向至/bin/systemctl status winbind.service
● winbind.service - Samba Winbind守护进程
已加载:已加载(/usr/lib/systemd/system/winbind.service;已启用;供应商预设:禁用)
活动状态:失败(结果:exit-code),自EDT时间2022年9月26日周一10:15:35起已过56秒
文档:man:winbindd(8)
man:samba(7)
man:smb.conf(5)
进程:12649 ExecStart=/usr/sbin/winbindd --foreground --no-process-group $WINBINDOPTIONS (code=exited, status=1/FAILURE)
主PID:12649(code=exited, status=1/FAILURE)
状态:"正在启动进程..."
9月26日10:15:35 rhel7x64tl winbindd[12649]:[2022/09/26 10:15:35.316642, 0] ../../source3/winbindd/winbindd_cache.c:3166(initialize_winbindd_cache)
9月26日10:15:35 rhel7x64tl winbindd[12649]: initialize_winbindd_cache: 正在清除缓存并以版本号2重新创建
9月26日10:15:35 rhel7x64tl winbindd[12649]:[2022/09/26 10:15:35.319950, 0] ../../source3/winbindd/winbindd_util.c:1279(init_domain_list)
9月26日10:15:35 rhel7x64tl winbindd[12649]: 无法获取我们的SID - 我们是否已加入?
9月26日10:15:35 rhel7x64tl winbindd[12649]:[2022/09/26 10:15:35.319999, 0] ../../source3/winbindd/winbindd.c:1462(winbindd_register_handlers)
9月26日10:15:35 rhel7x64tl winbindd[12649]: 无法初始化域列表
9月26日10:15:35 rhel7x64tl systemd[1]:winbind.service: 主进程已退出,code=exited, status=1/FAILURE
9月26日10:15:35 rhel7x64tl systemd[1]:无法启动Samba Winbind守护进程。
9月26日10:15:35 rhel7x64tl systemd[1]:单元winbind.service进入失败状态。
9月26日10:15:35 rhel7x64tl systemd[1]:winbind.service失败。
解决方案
-
按照以下步骤将终端加入Active Directory 如何加入Centos6、RHEL7 .
macOS
将macOS终端加入Active Directory
要将macOS Ventura终端加入Active Directory(AD)域,请按照以下步骤操作。
示例:
领域:example.local 域用户:administrator 域IP:11.11.11.11
-
前往 系统偏好设置 > 网络 .
-
在 以太网 部分,点击 高级 .
-
在 DNS 下,输入 IP地址 的 Active Directory .
-
点击 确定 保存更改。
返回 网络 页面,您可以看到已填写数据的字段。
-
设置 日期和时间 以及 时区 与 Active Directory .
-
前往 系统偏好设置 > 用户与群组 > 网络账户服务器 .
-
点击 编辑 > 打开目录实用工具 .
-
在 目录实用工具 中输入您的本地 用户名 和 密码 .
-
输入 Active Directory 域名 并点击 绑定 .
-
在 目录实用工具 中重新输入您的本地 用户名 和 密码 .
-
输入您的域 用户名 和 密码 .
-
返回 用户与群组 界面,您将能检查端点是否已成功加入 Active Directory .
重要提示
若端点名称包含连字符,您可能无法绑定到诸如 LDAP 或 Active Directory .
建立绑定时,请使用不含连字符的端点名称。