windows kerberos客户端执行kinit报错:kinit: Cannot find KDC for realm
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows kerberos客户端执行kinit报错:kinit: Cannot find KDC for realm相关的知识,希望对你有一定的参考价值。
参考技术A 在windows cmd执行命令:kinit cc/cc
错误详情:
kinit: Cannot find KDC for realm "HADOOP.COM" while getting initial credentials
原因:
kerberos客户端配置文件没有配好,主要有如下两点:
1、配置的格式如下:
1)取消[logging]项;
2)不能存在linux路径格式的配置。
2、kerberos客户端的默认安装路径为:C:\Program Files\MIT\Kerberos;
但配置文件需要配置在三个地方:
1)C:\Program Files\MIT\Kerberos
2)C:\ProgramData\MIT\Kerberos5,但是ProgramData目录是一个隐藏目录,直接找不到,可以拷贝C:\ProgramData\MIT\Kerberos5这个目录直接搜索就可以找到;
把拷贝的路径粘贴到箭头处搜索就可以找到了。
3)C:\Windows
只要准备好一份krb5.ini配置文件,分别拷贝到这三个目录就可以了,如果路径中已存在该文件,则替换,否则添加进去。
这样这个问题就可以得到解决。
0005-Windows Kerberos客户端配置并访问CDH
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
1.概述
本文档描述Windows Server2008 R2(windows的内核版本是6.1,与windows 7相同)下安装Kerberos Client及FireFox下HTTP访问HDFS、Yarn、Hive、HBase等Hadoop服务的Web UI(如Namenode的50070,Yarn的8088)的过程。安装文档主要分为以下几步:
1.在Windows Server2008 R2 64位上安装Kerberos Client。
2.在Windows下使用kinit测试。
3.通过keytab在Windows下进行kinit操作。
4.配置FireFox。
5.验证服务是否正常访问。
这篇文档将着重介绍Winodws Server R2下安装及使用Kerberos,并基于以下假设:
1.CDH环境已搭建并正常运行
2.HDFS、Yarn、HBase、Hive等组件已安装部署
3.集群已完成Kerberos的配置,并正常使用
以下是对本次测试环境,但不是本操作手册的硬限制:
1.操作系统:Redhat7.2
2.CM版本:CM5.11.1
3.CDH版本:CDH5.11.1
4.采用ec2-user对集群进行部署
2. Kerberos安装
2.1 Kerberos安装包准备
在Kerberos官网下载Kerberos安装包(http://web.mit.edu/kerberos/dist/),如下截图:
根据自己Windows操作系统下载不同的Client,32位或者64位。
2.2安装Kerberos
1.将下载下来的客户端双击打开
2.点击下一步,如下图所示
3.选择“同意”,点击下一步
4.选择“Typical”进入下一步
5.点击“install”进行安装
点击“finish”安装完成
6.配置C:ProgramDataMITKerberos5krb5.ini文件
将KDC Server服务器上/ect/krb5.conf文件中的部分内容,拷贝到krb5.ini文件中
注意:此处将标注部分拷贝至krb5.ini文件中,否则会导致MIT Kerberos无法正常启动,如果直接将krb5.conf文件更名为ini文件并替换krb5.ini文件会出现文件格式问题导致MIT Kerberos无法正常启动。
7.配置完成后,启动MIT Kerberos客户端,如下图所示:
3 在Window下使用kinit测试
3.1 使用密码登录Kerberos
1.KDC Server上通过admin创建一个用户
[email protected] keytab$ sudo kadmin.local
Authenticating as principal root/[email protected] with password.
kadmin.local: addprinc [email protected]
WARNING: no policy specified for [email protected]; defaulting to no policy
Enter password for principal "[email protected]":
Re-enter password for principal "[email protected]": Principal "[email protected]" created.
测试正常
2.在Winodw端,通过MIT Kerberos客户Get Ticket
在如下列表中可以看到获取到的Ticket
3.销毁获取到的Ticket
选中列表中需要销毁的Ticket,点击Destroy Ticket
4.命令行下初始化
在客户端可以看到初始化成功的Ticket
5.命令行下kdestroy
客户端数据已destroy
3.2 使用Keytab文件登录Kerberos
1.在KDC Server创建一个ketab文件,使用上一步创建的[email protected]
[email protected] keytab$ sudo kadmin.local
Authenticating as principal root/[email protected] with password.
kadmin.local: xst -norandkey -k test.keytab [email protected]
kadmin.local: Principal test.keytab does not exist.
Entry for principal [email protected] with kvno 1, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:-k.
Entry for principal [email protected] with kvno 1, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:-k.
Entry for principal [email protected] with kvno 1, encryption type des3-cbc-sha1 added to keytab WRFILE:-k.
Entry for principal [email protected] with kvno 1, encryption type arcfour-hmac added to keytab WRFILE:-k.
Entry for principal [email protected] with kvno 1, encryption type camellia256-cts-cmac added to keytab WRFILE:-k.
Entry for principal [email protected] with kvno 1, encryption type camellia128-cts-cmac added to keytab WRFILE:-k.
Entry for principal [email protected] with kvno 1, encryption type des-hmac-sha1 added to keytab WRFILE:-k.
Entry for principal [email protected] with kvno 1, encryption type des-cbc-md5 added to keytab WRFILE:-k.
注意:在生成keytab文件时需要加参数”-norandkey”否则会导致,直接使用kinit [email protected]初始化时会提示密码错误。
生成成功
测试test.keytab文件
注意:在非root用户下需要将生成的keytab文件,权限设置到644以上,否则会初始化失败或者使用sudo权限初始化
2.将生成的test.keytab文件拷贝到Windows Server上,在CMD命令行进行初始化
初始化成功,在MIT Kerberos客户端显示
4 FireFox浏览器访问
4.1 FireFox浏览器配置
1.打开FireFox浏览器,在地址栏输入about:config
2.修改配置参数
network.negotiate-auth.trusted-uris = ip-172-31-18-97.ap-southeast-1.compute.internal,ip-172-31-19-209.ap-southeast-1.compute.internalnetwork.auth.use-sspi = false
注意:network.negotiate-auth.trusted-uris此参数主要配置需要访问服务的hostname,如果需要访问多个host则以“,”分割。
4.2 测试访问HDFS服务
1.访问HDFS的50070端口
由于此时未将hdfs的ticket初始化所以不能正常访问,提示输入principal和密码
2.在CM节点的/var/run/cloudera-scm-agent目录下选择最新的xxx-hdfs-NAMENODE目录下的hdfs.keytab文件
3.测试hdfs.keytab是否正常
通过kadmin.loca命令列出所有hdfs的身份
[email protected] 577-hdfs-NAMENODE# kadmin.local
Authenticating as principal hdfs/[email protected] with password.
kadmin.local: listprincs hdfs*
hdfs/[email protected]
hdfs/[email protected]
hdfs/[email protected]
hdfs/[email protected]
[email protected] 577-hdfs-NAMENODE# kinit -kt hdfs.keytab hdfs/[email protected]
[email protected] 577-hdfs-NAMENODE# klist
Ticket cache: FILE:/tmp/krb5cc\_0
Default principal: hdfs/[email protected]
Valid starting Expires Service principal07/26/2017 11:23:08 07/27/2017 11:23:08 krbtgt/[email protected]
renew until 07/31/2017 11:23:08
注意:可以使用listprincs列出的hdfs身份进行初始化
4.将hdfs.keytab文件拷贝到Windows机器上,通过CMD命令进行初始化
5.再次通过FireFox浏览器访问HDFS服务,正常访问
6.访问Yarn资源管理服务是否能正常
查看作业详情时无法正常访问,由于该hostname信息未添加到FireFox的network.negotiate-auth.trusted-uris配置中
将该hostname添加到配置中
再次访问成功
5 keytab合并及使用
1.将需要合并的keytab文件统一的放在同一个目录下
2.使用ktutil命令合并keytab文件,操作如下
[email protected] keytab# ktutil
ktutil: rkt hbase.keytab
ktutil: rkt hive.keytab
ktutil: rkt hdfs.keytab
ktutil: rkt yarn.keytab
ktutil: wkt test-new.keytab
ktutil:
在当前目录下生成test-new.keytab文件
注意:由于生成的keytab文件权限默认为600,如果非root用户则需要使用sudo执行ktutil命令或者提升keytab权限至644以上。
3.将生成的文件拷贝至Windows机器上,使用kinit进行初始化
使用hdfs凭证进行初始化
HDFS的服务访问成功
使用hive凭证进行初始化
访问HDFS服务成功
使用hbase凭证进行初始化
访问HDFS服务成功
使用yarn凭证进行初始化
访问HDFS服务成功
通过上述测试,无论使用hdfs/yarn/hbase/hive任何身份均可正常访问HDFS服务,因此可以得出Kerberos只做身份认证,未做页面的授权。
6.常见问题
1.无法安装Kerberos,提示you must install a windows service错误
可能是由于Window版本问题,本文档选择的安装包本次不支持Windows Server2008(windows的内核版本是6.0,与windows vista相同),所以建议客户端机器选择Windows7或以上版本。
2.设置Kerberos Credential Cache File路径
配置Windows的环境变量
- KRB5_CONFIG: Path for the kerberos inifile.()
- KRB5CCNAME: Path for the kerberoscredential cache file.
配置完环境变量后,需要重启机器使其环境变量生效。注意默认的“KRB5CCNAME”目录是在C: emp.
3.在windows下的krb5.ini配置错误导致MIT Kerberos不能启动
如果直接将krb5.conf文件更名为ini文件并替换krb5.ini文件会出现文件格式问题导致MIT Kerberos无法正常启动,配置信息如下:
# Configuration snippets may be placed in this directory as well
[libdefaults]
default_realm = CLOUDERA.COM
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
# default_realm = EXAMPLE.COM
#default_ccache_name = KEYRING:persistent:%{uid}
[realms]
# EXAMPLE.COM = {
# kdc = kerberos.example.com
# admin_server = kerberos.example.com
# }
CLOUDERA.COM = {
kdc = ip-172-31-18-97.ap-southeast-1.compute.internal
admin_server = ip-172-31-18-97.ap-southeast-1.compute.internal
}
[domain_realm]
# .example.com = EXAMPLE.COM
# example.com = EXAMPLE.COM
.ip-172-31-18-97.ap-southeast-1.compute.internal = CLOUDERA.COM
ip-172-31-18-97.ap-southeast-1.compute.internal = CLOUDERA.COM
4.在创建后凭证后,使用该凭证创建keytab文件后,kinit该凭证报密码错误
在生成keytab文件时需要加参数”-norandkey”否则会导致直接使用kinit [email protected]直接初始化时会提示密码错误。
5.在通过浏览器访问Hadoop服务时部分功能能正常,部分功能不正常
需要确认访问的host地址是否加入network.negotiate-auth.trusted-uris中,此参数主要配置需要访问服务的hostname,如果需要访问多个host则以“,”分割。
6.不需要合并所有Hadoop相关的服务的keytab来访问不同的页面,成功初始化一个用户比如HDFS即可。
7 参考文档
http://doc.mapr.com/display/MapR/Configuring+Kerberos+Authentication+for+Windows
https://www.cloudera.com/documentation/enterprise/latest/topics/cdh\_sg\_browser\_access\_kerberos\_protected\_url.html
https://community.hortonworks.com/articles/28537/user-authentication-from-windows-workstation-to-hd.html
http://web.mit.edu/kerberos/dist/index.html#kfw-4.0
醉酒鞭名马,少年多浮夸! 岭南浣溪沙,呕吐酒肆下!挚友不肯放,数据玩的花!
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
以上是关于windows kerberos客户端执行kinit报错:kinit: Cannot find KDC for realm的主要内容,如果未能解决你的问题,请参考以下文章
Apache Kerberos 未从 Windows 客户端进行身份验证