我正在设置一个测试平台环境,其中 Linux(Ubuntu 10.04)客户端将向 Windows Server 2008 R2 域服务器进行身份验证。
我按照官方的 Ubuntu 指南在此处设置 Kerberos 客户端:https://help.ubuntu.com/community/Samba/Kerberoskinit
,但是在运行连接域服务器的命令时遇到了问题。
我正在运行的命令是:。此命令返回以下错误:kinit [email protected]
Realm not local to KDC while getting initial credentials
。不幸的是,我无法通过 Google 搜索找到其他遇到此确切错误的人,所以我不知道这意味着什么。
客户端能够 ping 服务器的主机名,因此 DNS 服务器指向域服务器。
以下是我的 krb5.conf 文件:
[libdefaults]
default = DS.DOMAIN.COM
dns_lookup_realm = true
dns_lookup_kdc true
[realms]
DS.DOMAIN.COM = {
kdc = ds.domain.com:88
admin_server = ds.domain.com
default_domain = domain.com
}
[domain_realm]
.domain.com = DS.DOMAIN.COM
domain.com = DS.DOMAIN.COM
我该如何纠正这些错误?我将不胜感激所有能得到的帮助!
答案1
您的域名是DS.DOMAIN.COM
还是仅仅DOMAIN.COM
是?
在您的领域中,您需要让它们匹配,因此假设 DS.DOMAIN.COM 是您的域,您需要更改:
[domain_realm]
.domain.com = DS.DOMAIN.COM
domain.com = DS.DOMAIN.COM
到
[domain_realm]
.ds.domain.com = DS.DOMAIN.COM
ds.domain.com = DS.DOMAIN.COM
但是,如果您的域名确实是,DOMAIN.COM
则需要将 krb5.conf 更改为如下所示:
[libdefaults]
default = DOMAIN.COM
dns_lookup_realm = true
dns_lookup_kdc = true
[realms]
DOMAIN.COM = {
kdc = ds.domain.com:88
#You can have more than one kds, just keep adding more kdc =
#entries
#kdc = dsN.domain.com:88
#Uncomment if you have a krb admin server
#admin_server = ds.domain.com:749
default_domain = domain.com
}
[domain_realm]
.domain.com = DOMAIN.COM
domain.com = DOMAIN.COM
然后你会kinit
喜欢这样:kinit [email protected]
答案2
查看源代码,似乎当协商过程收到对另一个域的引用并且该域不是“本地”或不在您的 krb5.conf 配置中时会抛出该错误。
00219 /* 00220 * 如果后端返回的主体不在本地 00221 * 领域,那么我们需要将客户端引导到该领域。 00222 */ 00223 如果 (!is_local_principal(client.princ)) { 00224/*条目是指向另一个领域的引荐*/ 00225 状态 = "推荐"; 00226 错误代码 = KRB5KDC_ERR_WRONG_REALM; 00227 转到错误; 00228 }
我无法告诉你那是什么。这可能取决于您的 Active Directory 环境,以及树中是否有多个域。您可能需要更多 domain_realm 别名,但从这里我们无法知道那到底是什么。
答案3
我使用 Zypher 提供的相同 krb5.conf 收到了相同的消息:
[libdefaults]
default = MYDOMAIN.COM
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
MYDOMAIN.COM = {
kdc = mydc.mydomain.com:88
admin_server = mydc.mydomain.com:749
default_domain = mydomain.com
}
[domain_realm]
.mydomain.com = MYDOMAIN.COM
mydomain.com = MYDOMAIN.COM
(抱歉,我似乎无法获得正确的格式:/)
在我的例子中,我需要将 kinit 设置为 MYDOMAIN.LOCAL 而不是 MYDOMAIN.COM。不确定这是否是由于 AD 中的身份验证设置造成的,还是仅适用于我的 AD 域。我的域有 2 个 DC,一个是 W2k3 R2,另一个(在 krb5.conf 中指定为 mydc.mydomain.com)是 W2k8 R2。但这是导致“获取初始凭据时领域不在 KDC 本地”消息的另一个可能原因
答案4
我在尝试将该机器从一个域连接到另一个域时收到此错误。编辑 /etc/krb5.conf 也不起作用。然后我尝试使用以下命令为不同的域重新配置内容
# sudo dpkg-reconfigure -plow krb5-config
使用所需的选项和设置,不再在 kinit 命令中出现上述错误。已解决。