zookeeper配置kerberos认证的坑

zookeeper配置了kerberos之后,zkCli.sh 连接认证死活不通过

连接命令: zkCli.sh

报错如下:

WatchedEvent state:SyncConnected type:None path:null
2017-08-21 10:11:42,054 [myid:] - ERROR [main-SendThread(localhost:2181):[email protected]] - An error: (java.security.PrivilegedActionException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Server not found in Kerberos database (7) - LOOKING_UP_SERVER)]) occurred when evaluating Zookeeper Quorum Member‘s  received SASL token. Zookeeper Client will go to AUTH_FAILED state.
2017-08-21 10:11:42,054 [myid:] - ERROR [main-SendThread(localhost:2181):[email protected]] - SASL authentication with Zookeeper Quorum member failed: javax.security.sasl.SaslException: An error: (java.security.PrivilegedActionException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Server not found in Kerberos database (7) - LOOKING_UP_SERVER)]) occurred when evaluating Zookeeper Quorum Member‘s  received SASL token. Zookeeper Client will go to AUTH_FAILED state.

查了很久,终于在kdc的日志中找到了蛛丝马迹,如下

Aug 21 10:11:42 master krb5kdc[21935](info): TGS_REQ (6 etypes {18 17 16 23 1 3}) 192.168.100.144: LOOKING_UP_SERVER: authtime 0,  [email protected] for zookeeper/[email protected], Server not found in Kerberos database

原因分析:1、在zookeeper的认证请求中,zookeeper端的默认principall应该是zookeeper/<hostname>@<realm>

2、当采用zkCli.sh 的方式请求中,默认的host应该是localhost

因此在kdc中才会发现客户端的请求和  zookeeper/[email protected] 这个principal进行认证,但是在kerberos的database中却没有这个principal。

解决方法: 使用zkCli.sh -server host:port 访问。 同时zookeeper配置文件中sever部分的principal必须为zookeeper/<hostname>@<your realm>

时间: 2024-08-06 09:51:21

zookeeper配置kerberos认证的坑的相关文章

kafka kerberos 认证访问与非认证访问共存下的ACL问题

在一个正在运行的kafka集群中添加kerberos认证和ACL权限控制,同时保证以前所有的producer\consumer服务不中断 解决方式: 使kafka集群监听两个端口,一个为无认证连接,另一个为kerberos的认证连接 这时候在配置ACL的时候出了问题: 假如我以kerberos认证的方式连接kafka集群,那么我的用户名是principal的primary部分.例如principal是  kafka/[email protected] ,那么我的用户名就是kafka. 这时候我只

kafka与zookeeper管理之kafka-manager踩坑小记

在elk集群搭建过程中,为了极大程度的利用服务器资源,kafka.zookeeper.logstash规划混跑在了同一组服务器上.随着业务量的增加,要频繁增加调整kafka的topic,出现问题时还要去服务器敲命令查看kafka和zookeeper的相关信息,效率低而且不方便,于是就考虑到用kafka的管理工具kafka-manager,安装配好后,整个集群的状态一目了然,而且可以方便的进行topic的操作.消费情况的查询.broker各种状态指标的查询等,非常方便,各种信息一目了然,安装配置过

spark 2.x在windows环境使用idea本地调试启动了kerberos认证的hive

1 概述 开发调试spark程序时,因为要访问开启kerberos认证的hive/hbase/hdfs等组件,每次调试都需要打jar包,上传到服务器执行特别影响工作效率,所以调研了下如何在windows环境用idea直接跑spark任务的方法,本文旨在记录配置本地调试环境中遇到的问题及解决方案. 2 环境 Jdk 1.8.0 Spark 2.1.0 Scala 2.11.8 Hadoop 2.6.0-cdh5.12.1 Hive 1.1.0-cdh5.12.1 环境搭建略,直接看本地调试spar

Kerberos认证协议中TGS服务器可以去掉吗?

Kerberos协议最早是由MIT提出的,是一种身份认证协议. 应用场景:在一个开放环境中,一个工作站用户想通过网络对分布在网络中的各种服务提出请求,那么希望服务器能够只对授权用户提供服务,并能够鉴别服务请求的种类. Kerberos协议的原理:Kerberos通过提供一个集中的授权服务器来负责用户对服务器的认证和服务器对用户的认证,而不是为每个服务器提供详细的认证协议. Kerberos名词: Client:用户. AS:认证服务器,可以通过查询数据库,判断用户的口令,从而为用户颁发票据授权票

Nginx 配置 Basic 认证

/* * 环境:LNMP(CentOS 6.6 + Nginx 1.8.0) */ 在 Nginx 下配置 Basic 认证需要依靠 Nginx 的 http_auth_basic_module 模块(官方文档:http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html) 配置过程: ① 生成认证文件,形式为 用户名:密码 密码采用 crypt 方式加密(用户名:user ,密码:123456) 文件保存在 /usr/local/n

tomcat 配置单向认证

tomcat配置单向认证 1.生成服务器端证书 keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 3650 2.由于是单向认证,没有必要生成客户端的证书,直接进入配置tomcat service

修改npm安装的全局路径和配置环境变量的坑

修改npm安装的全局路径和配置环境变量的坑 转自:http://www.qdfuns.com/notes/30749/0f66fcf5e62eed010f744d0d4adaa870.html 我之前安装npm时全是默认安装,模块全部安装在C盘了,今天心血来潮,把路径改到了D盘,结果改完后模块都不能识别了,都提示XX模块不是内部命令,这其实是环境变量配置的问题,我都是按照网上的教程改的环境变量,但是照着改也有错,反复改了好几次都不行,最后终于改好了.步骤如下: 1.要在你需要存放模块的文件夹里建

apache 配置用户认证 域名跳转 日志 静态缓存文件 防盗链接

配置文件:/usr/local/apache2/conf/extra/httpd-vhosts.conf <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/data/www" ServerName www.1.com ServerAlias www.a.com www.b.com #配置用户认证 <Directory /data/www> AllowOverride AuthConfi

图解Kerberos认证工作原理

本文是我在看了这篇英文说明之后的总结 https://technet.microsoft.com/zh-cn/library/cc961976.aspx 是总结,不是翻译,所以是我看后按自己的理解写的,如有问题,请指正! Kerberos在古希腊神话中是指:一只有三个头的狗.这条狗守护在地狱之门外,防止活人闯入.Kerberos协议以此命名,因为协议的重要组成部分也是三个:client, server, KDC(密钥分发中心). 要了解Kerberos协议的工作过程,先了解不含KDC的简单相互身