Ubuntu SSSD 子 AD 域的身份验证错误

Ubuntu SSSD 子 AD 域的身份验证错误

需要帮助对已加入子域的 Linux(Ubuntu)服务器进行身份验证。我可以在域控制器上看到服务器名称,并能够成功运行身份验证测试,但我无法使用我的域帐户登录。似乎 SSSD 或 KRB5 配置的某个配置设置需要指定子域。此外,这不是域信任问题,因为已加入子域的 Windows 服务器正在接受来自父帐户的凭据。

kinit -V [email protected]
Authenticated to Kerberos v5

root@SERVER:/var/log/sssd# systemctl status sssd

Oct 22 17:55:09 SERVER [sssd[ldap_child[27928]: Failed to initialize credentials using keytab [MEMORY:/etc/krb5.keytab]: Client '[email protected]' not found in Kerberos database. Unable to create GSSAPI-encrypted LDAP connection.

SSSD 日志文件中存在错误

Fri Oct 22 17:32:51 2021) [sssd[be[DOMAIN.SYS]]] [confdb_get_domain_internal] (0x0010): Unknown domain [CHILD.DOMAIN.SYS]
(Fri Oct 22 17:32:51 2021) [sssd[be[DOMAIN.SYS]]] [confdb_get_domains] (0x0010): Error (2 [No such file or directory]) retrieving domain [CHILD.DOMAIN.SYS], skipping!

SSSD 配置

root@SERVER:cat /etc/sssd/sssd.conf
[sssd]
services = nss, pam
config_file_version = 2
domains = DOMAIN.SYS, CHILD.DOMAIN.SYS

[nss]
default_shell = /bin/bash

[domain/DOMAIN.SYS]
id_provider = ad
access_provider = ad
override_homedir = /home/%d/%u

ad_hostname = server.child.domain.sys
#ad_server = dc.child.domain.sys
#ad_domain = DOMAIN.SYS

KRB5 配置

root@SERVER: cat /etc/krb5.conf
[libdefaults]
        default_realm = DOMAIN.SYS
        ticket_lifetime = 24h #
        renew_lifetime = 7d
        rdns = false

The following krb5.conf variables are only for MIT Kerberos.
        kdc_timesync = 1
        ccache_type = 4
        forwardable = true
        proxiable = true

答案1

您是如何设置 SSSD 的?您先设置realm discover然后设置吗realm join?如果没有设置,那么这是推荐的方法。我强烈建议您直接这样做。

您是否尝试过以子域中的用户身份进行身份验证?*getent passwd [email protected]

从您提供的格式不正确的信息中我可以看出,您在 sssd.conf 中有两个域

[sssd] 
services = nss, pam 
config_file_version = 2 

domains = DOMAIN.SYS, CHILD.DOMAIN.SYS

[nss] 
default_shell = /bin/bash

[domain/DOMAIN.SYS] 
id_provider = ad 
access_provider = ad 

您有 部分吗[domain/CHILD.DOMAIN.SYS]?如果有 会发生什么realm list?这应该会向您显示 sssd.conf 中正确配置的内容。

我不确定您是否需要在父子域情况下列出两个域,但也许可以先尝试单独配置子域。或者至少将子域放在列表的首位domains

domains = CHILD.DOMAIN.SYS
...
[domain/CHILD.DOMAIN.SYS] 
id_provider = ad 
access_provider = ad

您如何尝试验证父域用户?您尝试使用 SSH 还是尝试getent在服务器上本地使用?您是否使用完全限定名称来验证父域用户?例如getent passwd [email protected]

此错误表示它正在尝试使用具有错误计算机名称的密钥表。如果它已加入子域,则应该使用。服务器密钥表是否确实包含子域的正确服务器名称?Client '[email protected]'[email protected]

realm join这就是为什么我建议通过确保您首先可以使用子域凭据登录来简化问题。虽然我真的认为如果您没有使用此方法,您应该重新开始。

尝试按照此处的故障排除步骤进行操作,尤其是基础知识、后端和通用 AD 提供程序部分:https://sssd.io/troubleshooting/basics.html

(顺便说一句,我真的希望你的域名后缀不是真正的 .SYS)

相关内容