**使用Kinit,提示 kinit: Realm not local to KDC while getting initial credentials 怎么办? **
##现象
为了给一台Linux服务器配置Kerberos验证功能,特地向管理员申请了开发域的用户,并拿到了开发域域服务器的ip地址。
接着按照网上的教程,安装了kerberos-client (SuSE linux 12) , 然后配置/etc/krb5.conf。由于懒得再问管理员拿域名,就按照自己的记忆猜了一个。
[libdefaults]
default_realm = IBMDEV.COM
dns_lookup_kdc = false
dns_lookup_realm = false
[realms]
IBMDEV.COM = {
kdc = 10.1.1.3
default_domain = ibmdev.com
}
[domain_realm]
.ibmdev.com = IBMDEV.COM
ibmdev.com = IBMDEV.COM
[logging]
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
default = SYSLOG:NOTICE:DAEMON
配置好了之后,执行kinit username@DEV.COM , 结果就提示以上错误。
##分析 遇到以上提示,查遍google和bing,都找不到一个靠谱的答案。
直到下载了MIT的kerberos客户端(win 64),在一台已经加入办公域的机器上试验,才有了点感觉。
在这台机器上,先通过Kerberos Ticket Manager,在当前的缓存里找到登录信息,也找到了KDC的服务器名称。然后根据缓存信息,重新填写krb5.conf文件。最后拿着填好的krb5.conf文件到Linux服务器下去验证,居然成功了。这说明我之前的配置是错误的。对比之前的配置文件,我发现唯一错就错在Realm
看来kinit的确是把我的申请提交给KDC了,错误信息是来自服务器的信息。而且这个问题说的是,客户端提交的Realm,与服务端(KDC)的Realm不匹配,所以给你退回了。
知道问题所在,解决的办法也就很简单了。问问系统管理员,正确的Realm是什么即可。
##操作
问到正确的Realm后,原来是dev.ibm.com 。修改krb5.conf文件,问题排除。
[libdefaults]
default_realm = DEV.IBM.COM
dns_lookup_kdc = false
dns_lookup_realm = false
[realms]
DEV.IBM.COM = {
kdc = 10.112.15.30
default_domain = dev.ibm.com
}
[domain_realm]
.dev.ibm.com = DEV.IBM.COM
dev.ibm.com = DEV.IBM.COM
[logging]
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
default = SYSLOG:NOTICE:DAEMON
这个问题其实很简单,错误提示写得直白点,问题早就查出来了。浪费了我不少时间。