前言

在Ambari平台上,启用了Kerberos之后,一些服务的Web UI,像Namenode:50070、Oozie Web UI、Storm UI、Solr Web UI等快速链接大部分都是需要Kerberos认证才可以继续使用的。

像这种情况,就不能在Linux上进行操作了,需要在Windows上安装Kerberos客户端,再进行浏览器配置才可以访问Hadoop服务的Web UI界面。

安装配置主要分为以下几步

  1. 在windows上安装Kerberos客户端,并修改本地krb5.ini文件

  2. 配置hosts文件,添加集群ip映射

  3. 配置浏览器

  4. Kerberos认证

一、安装配置Kerberos客户端

1. 下载

官方下载地址:http://web.mit.edu/kerberos/dist/

Windows本地安装配置Kerberos客户端_Hadoop Web UI

根据自己windows操作系统来选择对应版本,我的是64位操作系统。

2. 安装

Windows本地安装配置Kerberos客户端_Hadoop Web UI_02Windows本地安装配置Kerberos客户端_Hadoop Web UI_03

Windows本地安装配置Kerberos客户端_Hadoop Web UI_04      

我们这里选择Typical,点击蓝色方框位下一步。Windows本地安装配置Kerberos客户端_Hadoop Web UI_05


Windows本地安装配置Kerberos客户端_Hadoop Web UI_06

点击完成。后面会出现提示框,是否重启计算机,我们选择No就可。

3. 调整环境变量

注:没有装JDK的可以忽略这一步。

安装完了Kerberos客户端会自动的在path里面加上了自己的目录,但是如果windows本地安装了Oracle JDK ,该JDK里面也带了一些 kinit, klist 等命令,所以需要把 Kberberos的环境变量调整得靠前一点,如图所示:

Windows本地安装配置Kerberos客户端_Hadoop Web UI_07

调整环境变量前:

Windows本地安装配置Kerberos客户端_Hadoop Web UI_08

调整环境变量后:

Windows本地安装配置Kerberos客户端_Hadoop Web UI_09

4. krb5.ini配置

文件路径:C:\ProgramData\MIT\Kerberos5\krb5.ini

将Kerberos KDC所在主机的/etc/krb5.conf文件有选择的粘贴到windows的krb5.ini里面

Windows本地安装配置Kerberos客户端_Hadoop Web UI_10

[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,如图所示:

Windows本地安装配置Kerberos客户端_Hadoop Web UI_11

点击我了解此风险继续,在搜索栏内,搜索network.negotiate-auth.trusted-uris,双击将其值修改为集群节点ip或主机名,注意:这里如果修改为主机名的话,到时候访问的话,就以主机名访问,ip的话会失效,不起作用。

Windows本地安装配置Kerberos客户端_Hadoop Web UI_12

搜索network.auth.use-sspi,将值改为false。

四、Kerberos认证

有两种方式:

  • 直接认证Kerberos主体,但得手动输入密码

  • 通过keytab密钥认证Kerberos主体,不需要手动输入密码,但前提是密钥要与Kerberos主体对应。

实例:

第一种认证方式

在Kerberos KDC所在主机上创建一个主体

Windows本地安装配置Kerberos客户端_Hadoop Web UI_13

有了lyz@XDATA.COM这个主体之后,我们可以双击打开我们的Kerberos客户端,获取Ticket。

Windows本地安装配置Kerberos客户端_Hadoop Web UI_14

也可以在windows命令行内执行

Windows本地安装配置Kerberos客户端_Hadoop Web UI_15Windows本地安装配置Kerberos客户端_Hadoop Web UI_16

第二种认证方式

也分两种情况,一种是服务自带的keytab,一种是我们手动生成的keytab。

实例:

我们先创建lyz@XDATA.COM的keytab文件,命令如下:

cd /etc/security/keytabs
kadmin.local
ktadd -norandkey -k lyz@keytab lyz@XDATA.COM  # -norandkey参数用于创建keytab时,密码保持不变

Windows本地安装配置Kerberos客户端_Hadoop Web UI_17

我们将上述hdfs.headless.keytab和lyz.keytab文件复制到windows本地/etc/security/keytabs目录下。

Kebreros通过keytab的方式来认证Kerberos主体,假设我们不知道keytab对应的是哪个Kerberos主体,那么我们可以使用klist -kte命令来查看keytab,然后在使用kinit命令认证,如下图所示:

Windows本地安装配置Kerberos客户端_Hadoop Web UI_18

注意: 上面的kinit认证,只需要认证成功一种就可以任意访问Hadoop所有服务了,上面只是针对kinit的命令选择进行了罗列。

这样我们就可以访问我们的Namenode:50070、Oozie Web UI、Storm UI、Solr Web UI等等了,如图所示:

Windows本地安装配置Kerberos客户端_Hadoop Web UI_19

Windows本地安装配置Kerberos客户端_Hadoop Web UI_20Windows本地安装配置Kerberos客户端_Hadoop Web UI_21

Windows本地安装配置Kerberos客户端_Hadoop Web UI_22

Kerberos客户端显示的Ticket如下:

Windows本地安装配置Kerberos客户端_Hadoop Web UI_23

Windows本地安装配置Kerberos客户端_Hadoop Web UI_24