Bootstrap

解决Mac系统下,kerberos客户端无法连接的问题

小伙伴的开发机器是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
 }

 

;