Kinit 无法连接到域服务器:获取初始凭证时,领域不在 KDC 本地

Kinit 无法连接到域服务器:获取初始凭证时,领域不在 KDC 本地

我正在设置一个测试平台环境,其中 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 命令中出现上述错误。已解决。

相关内容