1、问题描述:
CDH集群启用 HTTP Web 控制台的 Kerberos 身份验证后,FireFox下HTTP访问HDFS、Yarn、Hive、HBase等Hadoop服务的Web UI(如Namenode的50070,Yarn的8088)等出现错误
2、解决方案:
思路:
windows 10 安装kerberos客户端
1、win10安装Kerberos客户端
在Kerberos官网下载Kerberos安装包,下载地址
下载画圈圈的这个压缩包
2、双击安装,默认下一步,选择typical,install。
3、配置windows 下面的环境配置文件
将linux /etc/krb5.conf 中的内容 复制到C:\ProgramData\MIT\Kerberos5\krb5.ini
关于一些日志路径之类的可以删掉,不然会导致Kerberos启动不起不来,为了防止Windows找不到,我们把该文件继续复制到C:\Windows下面
# Configuration snippets may be placed in this directory as well
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_realm = HADOOP.COM
# default_ccache_name = KEYRING:persistent:%{uid}
[realms]
HADOOP.COM = {
kdc = cdh21:88
admin_server = cdh21:749
}
[domain_realm]
.hadoop.com = HADOOP.COM
hadoop.com = HADOOP.COM
4、启动MIT Kerberos客户端
输入集群的 principal 账户与密码,测试与集群kerberos通不通
- 测试通过之后MIT客户端会生成一个TicKet(举例)
5、测试通过之后配置火狐浏览器的配置信息,让其能关联Kerberos进行访问web页面
- 配置浏览器
打开 firefox 浏览器 (为啥不是 chrome 及 ie ,可以百度,秘钥传输会失败),
输入 about:config- firefox浏览器配置
2.1 网址栏输入about:config
修改: network.negotiate-auth.trusted-uris = cdh21,cdh22,cdh24
参数说明:network.negotiate-auth.trusted-uris此参数主要配置需要访问服务的hostname,如果需要访问多个host则以“,”分割,映射关系在hosts里面已经配置
修改:network.auth.use-sspi = false
需要注意的是这边在配置完成之后,并且下面或得到keytab初始化之后,浏览器一定要重启,不然会无法关联到一起,秘钥无法发送到集群进行验证
6、制作集群上的hdfs.keytab,到windows来初始化用户秘钥信息
- 由于配置完火狐之后,还没有hdfs.keytab账户密码文件等信息,所以需要在集群上面初始化出来,会在当前文件夹下面生成一个 hdfs.keytab,然后sz,这边制作的时候一定要加 -norandkey 不然会直接导致密码重新初始化
[root@dounine ~]# kadmin.localAuthenticating as principal root/admin@EXAMPLE.COM with password.
kadmin.local: xst -k hdfs.keytab -norandkey hdfs/cdh21@EXAMPLE.COM
Entry for principal admin/admin@EXAMPLE.COM with kvno 6, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:admin.keytab.
Entry for principal admin/admin@EXAMPLE.COM with kvno 6, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:admin.keytab.
Entry for principal admin/admin@EXAMPLE.COM with kvno 6, encryption type des3-cbc-sha1 added to keytab WRFILE:admin.keytab.
Entry for principal admin/admin@EXAMPLE.COM with kvno 6, encryption type arcfour-hmac added to keytab WRFILE:admin.keytab.
Entry for principal admin/admin@EXAMPLE.COM with kvno 6, encryption type camellia256-cts-cmac added to keytab WRFILE:admin.keytab.
Entry for principal admin/admin@EXAMPLE.COM with kvno 6, encryption type camellia128-cts-cmac added to keytab WRFILE:admin.keytab.
Entry for principal admin/admin@EXAMPLE.COM with kvno 6, encryption type des-hmac-sha1 added to keytab WRFILE:admin.keytab.
Entry for principal admin/admin@EXAMPLE.COM with kvno 6, encryption type des-cbc-md5 added to keytab WRFILE:admin.keytab.
kadmin.local: exit
- 在本地cmd中进行运行命令,首先进入到安装的kerberos客户端的bin里面,使用安装的kinit klist命令才能生效,然后使用klist查看本地默认登录的是否是改初始化用户,在测试登录ui
注意点:由于本机JDK或者安装的其他一些环境都带有klist kinit等工具类,所以我们在初始化的时候一定要进入到我们上面安装的Kerberos的bin里面,使用安装的工具类初始化才行 - 还有个注意点,其实这边初始化一个用户就可以了,如果
C:\Users\user> cd C:\Program Files\MIT\Kerberos\bin
C:\Program Files\MIT\Kerberos\bin> kinit.exe -kt C:\Users\user\Desktop\hdfs.keytab hdfs/cdh21
初始化之后会在Kerberos客户端生成一个ticket
-
重启或火狐浏览器
访问 http://cdh21:9870 namenode主节点查看文件系统,可以访问,安装成功
-
在访问该web页面之后,会在Kerberos客户端的ticket principal 里面生成http