将终端加入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。
可通过以下路径修改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到files: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将Linux终端加入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 [domain/example.local] ad域 = example.local krb5领域 = EXAMPLE.LOCAL realmd标签 = 管理系统 samba加入 缓存凭据 = 真 ID提供程序 = ad 离线时存储krb5密码 = 真 默认shell = /bin/bash ldap ID映射 = 真 使用完全限定名 = 假 回退主目录 = /home/%d/%u 访问提供程序 = ad
将文件权限设置为
600.# chmod 600 /etc/sssd/sssd.conf # service sssd start # chkconfig sssd on
-
配置
krb5.conf文件,先备份旧的/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 -
运行以下命令检查域连接并确保一切正常:
# 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终端加入Active Directory
要为SUSE系统使用SSSD加入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 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 # adcli info example.local # id administrator # getent passwd administrator
使用Winbind将Linux终端加入Active Directory
本节涵盖以下操作系统的指导:
在CentOS6、RHEL7上使用Winbind将Linux终端加入Active Directory
要使用Winbind将Linux终端加入Active Directory(AD)域,您需要按照以下步骤操作,并同时满足 通用先决条件 .
示例:
域:example.local 域用户:administrator 域IP:11.11.11.11
-
安装必要的软件包。
# yum -y install 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)域,需遵循以下步骤并满足 通用前提条件 .
示例:
域: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并用以下内容覆盖:[global] workgroup = EXAMPLE kerberos method = secrets and keytab realm = EXAMPLE.LOCAL security = ADS winbind refresh tickets = yes winbind use default domain = yes template shell = /bin/bash template homedir = /home/%D/%U idmap config * : backend = tdb idmap config * : range = 10000-19999 idmap config EXAMPLE: backend = rid idmap config EXAMPLE: range = 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将Ubuntu、Debian的Linux终端加入Active Directory
要使用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 <NAME>
-
从
/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 当前模式: enforcing 配置文件模式: enforcing 策略MLS状态: enabled 策略deny_unknown状态: allowed 内存保护检查: 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数据库的搜索顺序是否文件,然后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)执行discover操作时,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)执行discover操作时,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时
"errors": [
{
"description": "无法为keytab文件生成凭据缓存文件: default",
"message": "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
错误: 无法启动系统安全服务守护进程 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;已启用;供应商预设:禁用)
状态:自东欧夏令时2022-09-21 22:08:34起失败(结果:退出码);5秒前
进程:9457 ExecStart=/usr/sbin/sssd -i ${DEBUG_LOGGER}(代码=退出,状态=4)
主PID:9457(代码=退出,状态=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:主进程退出,代码=退出,状态=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:失败,结果为'退出码'。
解决方案
-
为
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:32:59日志相同,此处省略重复翻译)。
10月11日 10:40:31 10-10-192-49.yyz.local sssd[be[yyz.local]][25701]:警告:若ad_gpo_access_control选项设置为强制模式,用户将被拒绝基于GPO的登录访问。
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:32:59日志相同,此处省略重复翻译)。
10月11日 10:40:54 10-10-192-49.yyz.local sssd[be[yyz.local]][25701]:警告:若ad_gpo_access_control选项设置为强制模式,用户将被拒绝基于GPO的登录访问。
解决方法
-
检查
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_lookup_realm = true dns_lookup_kdc = true dns_fallback = yes rdns = false [realms] EXAMPLE.LOCAL = { kdc = example.local default_domain = example.local } [domain_realm] .EXAMPLE.LOCAL = EXAMPLE.LOCAL EXAMPLE.LOCAL = EXAMPLE.LOCAL
Winbind域加入过程故障排除
本节列出了Winbind加入Active Directory域过程中可能遇到的错误。
示例:
领域:example.local 域用户:administrator 域IP:11.11.11.11
错误:无法为keytab文件生成凭据缓存文件: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_address或-Shost_name参数。
错误: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时,由于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;已启用;供应商预设:禁用)
活动状态:失败(Result: exit-code),自2022年9月26日周一 10:15:35 EDT起;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]: Unit 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 .
要建立绑定,请使用不含连字符的端点名称。