小伙伴的开发机器是mac系统,需要连接Hadoop集群做开发。但是kinit命令一直报 “kinit: krb5_get_init_creds: unable to reach any KDC in realm XXXXXXX.HADOOP, tried 1 KDC” 错误。
我们排查了Kerberos客户端版本、krb5.conf配置文件以及 keytab,都是正确的。
经过重重定位,我们发现是传输协议的问题。
以下划重点:
linux上kerberos的传输协议默认是TCP,而mac上默认是UDP协议,从而导致无法连接的错误。
于是,对krb5.conf文件做如下更改,即解决问题!(在realms配置中,kdc地址加上 “tcp/” 前缀)
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = XXXXX.HADOOP
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 3650d
forwardable = true
udp_preference_limit = 1
[realms]
XXXXX.HADOOP = {
kdc = tcp/kdc-lb.hadoop.srv:1088
}
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}