一。安装kerberos ( centos 7)
kdc : yum install krb5-server krb5-libs krb5-workstation
client: yum install krb5-libs krb5-workstation
二。 修改hosts 文件,所有需要kerberos 的主机都添加在 /etc/hosts 文件当中
三。 修改krb5.conf
vim /etc/krb5.conf
[libdefaults]
renew_lifetime = 7d
forwardable = true
default_realm = HADOOP.COM
ticket_lifetime = 24h
dns_lookup_realm = false
dns_lookup_kdc = false
#default_tgs_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
#default_tkt_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
[logging]
default = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
kdc = FILE:/var/log/krb5kdc.log
[realms]
HADOOP.COM= {
admin_server =bd0000
kdc =bd0000
}
将服务端修改好的krb5.conf文件拷贝到所有的客户端
scp /etc/krb5.conf root@bd0001:/etc/
scp /etc/krb5.conf root@bd0002:/etc/
scp /etc/krb5.conf root@bd0003:/etc/
四。修改 kdc.conf 文件
vim /var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
HADOOP.COM = {
#master_key_type = aes256-cts
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
}
五。 修改kadm5.acl 文件
vim /var/kerberos/krb5kdc/kadm5.acl
*/admin@HADOOP.COM *
六。初始化主key
创建一个域:
kdb5_util create -r HADOOP.COM -s 需要输入密码,可以自己定义 ,这里设置admin@123
kadmin.local -q "addprinc root/admin" 添加一个管理员principal ,并设置密码。admin@123
七。启动服务
systemctl start krb5kdc; systemctl status krb5kdc
systemctl start kadmin; systemctl status kadmin
设置开机启动:
systemctl enable krb5kdc
systemctl enable kadmin
八。下载 JCE,每台节点都需要执行
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
unzip -o -j -q jce_policy-8.zip -d /usr/java/jdk1.8.0_121/jre/lib/security/
九。重启ambari-server
sudo ambari-server restart
十。ambari 上 开启 kerberos (按照guide 提示操作即可......步骤省略)
注意: guide 过程中需要启停ambari 管理的所有服务。
kerberos的日常操作:
① kdc 登录:
kadim.local 仅限 kdc 主机直接登录,无须密码 ,登录进去就显示 kadmin.local:
kadmin -p root/admin@HADOOP.COM client 主机登录需要输入密码,登录进去就显示 kadmin:
② principal 维护 (可以登录kdc , 也可以不登录kdc 中维护)
kadmin.local -q "list_principals" // 查看所有的 principal ( 服务名/_HOST@REALM.TLD )
kadmin.local -q "addprinc bd00/bd00@HADOOP.COM" // 添加principal , 需要手工指定密码
kadmin.local -q "addprinc -randkey bd00/bd00@HADOOP.COM" // 随机生成密码
// 如果是系统组件需要的principal , 可以加参数 -randkey 生成随机密码
kadmin.local -q "delprinc bd00/bd00@HADOOP.COM" // 删除principal
③ principal 添加完后,就可以导出keytab 生成及查看
kadmin.local: ktadd -k /var/kerberos/krb5kdc/kadm5.keytab kadmin/admin kadmin/changepw
kadmin.local: xst -k /etc/security/keytabs/hdfs.headless.keytab tocdc-tcluster@HADOOP.COM
// ktadd , xst 两种方式都行
kadmin.local -q "xst -k /etc/security/keytabs/hdfs.headless.keytab tocdc-tcluster@HADOOP.COM"
kadmin.local -q "ktadd -k /var/kerberos/krb5kdc/kadm5.keytab kadmin/admin@HADOOP.COM"
// 注意,如上在导出keytab 的时候会改密码(之前添加principal 的密码),kinit 验证密码会不对
// 如果导出keytab 不想改密码 ,添加参数 -norandkey, 如下: (kadmin.local 方式下)
kadmin.local: ktadd -k /home/tocdc/boco.keytab -norandkey boco/boco@HADOOP.COM
或者命令行:
kadmin.local -q "xst -k /tmp/dn.service.keytab -norandkey dn/data-p2-4@HADOOP.COM"
klist -kt /etc/security/keytabs/spark2.headless.keytab //查看keytab 的内容
④ 查看当前用户认证信息 : klist -e
⑤ 删除当前用户认证信息: kdestroy
⑥ 用户认证:
kinit principal // 需要密码
kinit -kt /etc/security/keytabs/xxxx.keytab principal //不需要密码,keytab 已经包含