子/子 AD 域的 Ubuntu SSSD 身份驗證錯誤
需要幫助驗證加入子域的 linux (Ubuntu) 伺服器。我可以在域控制器上看到伺服器名稱,並且能夠成功執行身份驗證測試,但是我無法使用我的域帳戶登錄。似乎 SSSD 或 KRB5 配置的某個配置設置需要指定子域。這也不是域信任問題,因為加入子域的 Windows 伺服器正在接受來自父帳戶的憑據。
kinit -V user@DOMAIN.SYS 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 'SERVER$@DOMAIN.SYS' 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!
固態硬碟配置
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
你是如何設置 SSSD 的?你做了
realm discover
然後realm join
?如果你沒有,這是推薦的方法。我強烈建議您這樣做。您是否嘗試過以子域中的使用者身份進行身份驗證?*
getent passwd myuser@CHILD.DOMAIN.SYS
從我在您提供的格式錯誤的資訊中可以看出,您在 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 myuser@DOMAIN.SYS
此錯誤表明它正在嘗試使用具有錯誤電腦名稱的密鑰表
Client 'SERVER$@DOMAIN.SYS'
。SERVER$@CHILD.DOMAIN.SYS
如果它已加入子域,則應該使用它。伺服器密鑰表實際上是否包含子域的正確伺服器名稱?這就是為什麼我建議通過確保您可以先使用子域憑據登錄來簡化問題。雖然我真的認為
realm join
如果你不使用這種方法,你應該重新開始。嘗試按照此處的故障排除步驟進行操作,尤其是“基礎知識”、“後端”和“通用 AD 提供程序”部分:https ://sssd.io/troubleshooting/basics.html
(順便說一句,我真的希望您的域後綴不是真正的 .SYS)