将终端加入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加入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接入 缓存凭据 = 真 身份提供方 = ad 离线存储krb5密码 = 真 默认shell = /bin/bash ldap身份映射 = 真 使用全限定名 = 假 回退主目录 = /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将Linux终端加入Active Directory(适用于Ubuntu、Debian)
要使用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
在SUSE Linux Enterprise 12/15上使用SSSD加入Active Directory
要在SUSE系统上使用SSSD将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] 默认域 = 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 -
配置
sssd.conf通过备份旧文件/etc/sssd/sssd.conf并用以下内容覆盖其内容:[sssd] 配置文件版本 = 2 服务 = nss,pam 域 = example.local [nss] 过滤用户 = root 过滤组 = root [pam] [域/example.local] ID提供者 = ad 认证提供者 = ad AD域 = example.local 缓存凭证 = true 枚举 = false 覆盖主目录 = /home/%d/%u LDAP ID映射 = true LDAP引用 = false LDAP架构 = 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安装samba samba-client samba-winbind samba-winbind-client
-
配置
smb.conf文件。备份旧版
/etc/samba/smb.conf并用以下内容覆盖:[全局] 工作组 = EXAMPLE 领域 = EXAMPLE.LOCAL 安全机制 = ads idmap配置* : 后端 = autorid idmap配置* : 范围 = 100000-19999999 idmap配置* : 范围大小 = 1000000 模板主目录 = /home/%D/%U 模板shell = /bin/bash winbind使用默认域 = false winbind离线登录 = true 日志文件 = /var/log/samba/log.%m 最大日志大小 = 50 日志级别 = 0 kerberos方法 = secrets and keytab -
加入Active Directory域。
-
创建Kerberos
krb5.keytab文件:# sudo net ads keytab create -U administrator
-
启用Winbind服务。
# systemctl启用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并用以下内容覆盖:[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 <名称>
-
从
/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
-
修改配置文件中的SELINUX变量值
/etc/selinux/config以禁用它。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: Unit is masked.
该错误代码由缺少软件包引起。
# 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: Unit is masked. 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相同的时区、日期和时间。
-
检查DC是否响应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
错误:无法找到repo的有效baseurl:base
此问题出现在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错误:所有镜像URL均未使用ftp、http[s]或file协议。 例如:无效的发行版/repo/架构组合 移除无有效镜像的镜像列表:/var/cache/yum/x86_64/6/base/mirrorlist.txt 错误:无法找到repo的有效baseurl:base
解决方案
-
在
/etc/yum.repos.d/目录下创建新repo文件并添加以下内容:[C6.10-base] name=CentOS-6.10 - 基础仓库 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 - 更新仓库 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 - 附加仓库 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 - 贡献仓库 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 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探测: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; 已启用; 供应商预设: 禁用)
活动状态:失败(结果: exit-code)自 2022-09-21 22:08:34 EEST 起;5秒前
进程: 9457 ExecStart=/usr/sbin/sssd -i ${DEBUG_LOGGER} (code=exited, status=4)
主PID: 9457 (code=exited, status=4)
Sep 21 22:08:34 slesl15gia systemd[1]: 正在启动系统安全服务守护进程...
Sep 21 22:08:34 slesl15gia sssd[9457]: 无法读取配置文件 /etc/sssd/sssd.conf。请确保该文件仅对所有者可读且属主为 root.root。
Sep 21 22:08:34 slesl15gia systemd[1]: sssd.service: 主进程退出,code=exited, status=4/NOPERMISSION
Sep 21 22:08:34 slesl15gia systemd[1]: 无法启动系统安全服务守护进程。
Sep 21 22:08:34 slesl15gia systemd[1]: sssd.service: 单元进入失败状态。
Sep 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]:警告:若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月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秒前)
主进程ID: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
Oct 11 16:43:32 10-10-192-49.yyz.local sssd_be[1963]: GSSAPI客户端步骤1
Oct 11 16:43:32 10-10-192-49.yyz.local sssd_be[1963]: GSSAPI客户端步骤1
Oct 11 16:43:32 10-10-192-49.yyz.local sssd[be[yyz.local]][1963]: GSSAPI错误:未指定的GSS故障。次要代码可能提供更多信息(在Kerberos数据库中未找到服务器)
Oct 11 16:43:32 10-10-192-49.yyz.local sssd[nss][1967]: 已请求枚举但未启用
Oct 11 16:43:36 10-10-192-49.yyz.local sssd_be[1963]: GSSAPI客户端步骤1
Oct 11 16:43:36 10-10-192-49.yyz.local sssd_be[1963]: GSSAPI客户端步骤1
Oct 11 16:43:36 10-10-192-49.yyz.local sssd[be[yyz.local]][1963]: GSSAPI错误:未指定的GSS故障。次要代码可能提供更多信息(在Kerberos数据库中未找到服务器)
Oct 11 16:43:36 10-10-192-49.yyz.local sssd_be[1963]: GSSAPI客户端步骤1
Oct 11 16:43:36 10-10-192-49.yyz.local sssd_be[1963]: GSSAPI客户端步骤1
Oct 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"设置为密钥表方法才能使用密钥表功能。 输入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时,由于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),自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)
主进程ID: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 .
建立绑定时,请使用不含连字符的终端名称。