Kerberos的那些报错汇总
Kerberos的那些报错汇总
问津已非少年 发表于4个月前
Kerberos的那些报错汇总
  • 发表于 4个月前
  • 阅读 7
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 本文记录了在使用Kerberos过程中遇到的一些问题,后续有新的问题会再添加。在Hadoop集群环境中,搭建KDC和启用Kerberos比较简单,本文不做描述,只是罗列了一些可能问题,做抛砖引玉之用,欢迎大家补充~

案例一:多线程访问启用了Kerberos的服务报错

情景:有一个采用了Kerberos认证的web服务,使用Jmeter对其进行压测,在web的日志里看到如下报错

错误如下GSSException: Failure unspecified at GSS-API level (Mechanism level: Request is a replay (34)) Caused by: KrbException: Request is a replay (34)

错误原因:当有 多个 客户端使用 同一principal 同时 向KDC请求认证的时候,Kerberos在 同一时间 能且仅能允许 一个 客户端通过认证!

这样就导致其他线程的连接是无法通过认证的,因而抛出上面的异常。所以在有大量需授权的任务的时候,最好每台机器使用不同的principal,避免多线程使用同一principal请求。

案例二: 证书已过期

错误如下GSSException: Failure unspecified at GSS-API level (Mechanism level: Specified version of key is not available (44))

错误原因:当前的keytab证书无效,keytab里存储的key已过期,这个通常是因为在KDC里重新导出过证书,而在导出证书的时候重新生成了密钥,需要把新的keytab文件拷贝过来重新kinit,或者导出证书的时候加上 -norandkey

案例三:没有证书

错误如下GSS initiate failed

错误原因:运行程序或请求服务时没有执行kinit操作,或程序里没有使用keytab和principal进行login

案例四:服务请求中没有证书

错误如下GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]; Host Details : local host is: "node2.xxx.com/172.21.0.189"; destination host is: "node1.xxx.com":8020;

错误原因:这个跟案例三的错误是一样的,都属于是没有证书,但是这里的更详细,我们需要学会去看到底是哪出了问题。从Host Details可以看出是node2向node3发起请求的时候认证不通过,那么说明是node2上没有证书,其次请求的端口是8020,由此可以看出是请求的HDFS服务,因为可以很快定位出问题在哪

案例五:时间不同步

错误如下GSSException: ClockSkew,这个错误由于当时没记下来,只记得这个clockskew的关键词,所以不完整

错误原因:从关键词可以看出,是时钟倾斜了,说明客户端和服务端的时间是不同步的,Kerberos有一个可允许的时间差,机器时间超过这个设定的时间差就会报错,把时间进行同步就好了

欢迎阅读转载,转载请注明出处:https://my.oschina.net/u/2539801/blog/1511055

共有 人打赏支持
粉丝 11
博文 19
码字总数 30966
×
问津已非少年
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: