前言
在Ambari平台上,启用了Kerberos之后,一些服务的Web UI,像Namenode:50070、Oozie Web UI、Storm UI、Solr Web UI等快速链接大部分都是需要Kerberos认证才可以继续使用的。
像这种情况,就不能在Linux上进行操作了,需要在Windows上安装Kerberos客户端,再进行浏览器配置才可以访问Hadoop服务的Web UI界面。
安装配置主要分为以下几步
-
在windows上安装Kerberos客户端,并修改本地krb5.ini文件
-
配置hosts文件,添加集群ip映射
-
配置浏览器
-
Kerberos认证
一、安装配置Kerberos客户端
1. 下载
官方下载地址:http://web.mit.edu/kerberos/dist/
根据自己windows操作系统来选择对应版本,我的是64位操作系统。
2. 安装
我们这里选择Typical,点击蓝色方框位下一步。
点击完成。后面会出现提示框,是否重启计算机,我们选择No就可。
3. 调整环境变量
注:没有装JDK的可以忽略这一步。
安装完了Kerberos客户端会自动的在path里面加上了自己的目录,但是如果windows本地安装了Oracle JDK ,该JDK里面也带了一些 kinit, klist 等命令,所以需要把 Kberberos的环境变量调整得靠前一点,如图所示:
调整环境变量前:
调整环境变量后:
4. krb5.ini配置
文件路径:C:\ProgramData\MIT\Kerberos5\krb5.ini
将Kerberos KDC所在主机的/etc/krb5.conf文件有选择的粘贴到windows的krb5.ini里面
[libdefaults]
renew_lifetime = 7d
forwardable = true
default_realm = XDATA.COM
ticket_lifetime = 24h
dns_lookup_realm = false
dns_lookup_kdc = false
# default_ccache_name = /tmp/krb5cc_%{uid}
# default_tgs_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
# default_tkt_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
[realms]
XDATA.COM = {
admin_server = 10.6.6.96
kdc = 10.6.6.96
}
二、配置hosts文件
文件路径:C:\Windows\System32\drivers\etc\hosts
添加ip的映射
10.6.6.96 node96.xdata
10.6.6.97 node97.xdata
10.6.6.98 node98.xdata
三、配置浏览器
由于技术有限,目前只实现如何配置火狐Firefox浏览器,在火狐浏览器上访问Hadoop的Web UI。
打开浏览器,在地址栏输入about:config,如图所示:
点击我了解此风险继续,在搜索栏内,搜索network.negotiate-auth.trusted-uris,双击将其值修改为集群节点ip或主机名,注意:这里如果修改为主机名的话,到时候访问的话,就以主机名访问,ip的话会失效,不起作用。
搜索network.auth.use-sspi,将值改为false。
四、Kerberos认证
有两种方式:
-
直接认证Kerberos主体,但得手动输入密码
-
通过keytab密钥认证Kerberos主体,不需要手动输入密码,但前提是密钥要与Kerberos主体对应。
实例:
第一种认证方式
在Kerberos KDC所在主机上创建一个主体
有了lyz@XDATA.COM这个主体之后,我们可以双击打开我们的Kerberos客户端,获取Ticket。
也可以在windows命令行内执行
第二种认证方式
也分两种情况,一种是服务自带的keytab,一种是我们手动生成的keytab。
实例:
我们先创建lyz@XDATA.COM的keytab文件,命令如下:
cd /etc/security/keytabs
kadmin.local
ktadd -norandkey -k lyz@keytab lyz@XDATA.COM # -norandkey参数用于创建keytab时,密码保持不变
我们将上述hdfs.headless.keytab和lyz.keytab文件复制到windows本地/etc/security/keytabs目录下。
Kebreros通过keytab的方式来认证Kerberos主体,假设我们不知道keytab对应的是哪个Kerberos主体,那么我们可以使用klist -kte命令来查看keytab,然后在使用kinit命令认证,如下图所示:
注意: 上面的kinit认证,只需要认证成功一种就可以任意访问Hadoop所有服务了,上面只是针对kinit的命令选择进行了罗列。
这样我们就可以访问我们的Namenode:50070、Oozie Web UI、Storm UI、Solr Web UI等等了,如图所示:
Kerberos客户端显示的Ticket如下: