Skip to content

Kerberos主体认证

Kerberos提供了两种认证方式,一种是通过输入密码认证,另一种是通过keytab密钥文件认证,但两种方式不可同时使用。

1. 密码认证

  1. 使用kinit命令进行主体认证
sh
[root@hadoop101 ~]# kinit admin/admin
Password for admin/admin@HADOOP.COM: (输入密码)
  1. 查看认证凭证
sh
[root@hadoop101 ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin/admin@HADOOP.COM

Valid starting       Expires              Service principal
03/07/2025 14:21:11  03/08/2025 14:21:11  krbtgt/HADOOP.COM@HADOOP.COM
10renew until 03/14/2025 14:21:11

2. keytab密钥文件认证

由于认证过程中都需要输入密码。所以我们需要为user用户生成keytab文件,便于后续通过执行脚本免密登录,不指定路径的话默认放在当前工作目录,我们指定到"/etc/security/"下。
注意:在使用生成keytab文件方式时,流程是CDH平台会把我们kerberos密码进行重置,然后再生成keytab文件。这就使得我们直接使用kinit admin/admin命令时会输入密码却提示密码错误。解决办法是:在生成keytab文件时需要加参数"-norandkey"。

  1. 生成主体admin/admin的keytab文件到指定目录/root/admin.keytab
sh
## 使用xst命令生成密钥文件
[root@hadoop101 ~]# kadmin.local -q "xst -norandkey -k /root/admin.keytab admin/admin@HADOOP.COM"
## 查看/root目录,发现有密钥文件
[root@hadoop101 ~]# ll
total 8
-rw------- 1 root root  465 Mar  7 14:33 admin.keytab
drwxr-xr-x 2 root root 4096 Mar  6 15:24 bin
  1. 使用keytab进行认证
sh
## 使用密钥文件认证
[root@hadoop101 ~]# kinit -kt /root/admin.keytab admin/admin
  1. 查看认证凭证
sh
[root@hadoop101 ~]# klist 
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin/admin@HADOOP.COM

Valid starting     Expires            Service principal
08/27/19 15:41:28  08/28/19 15:41:28  krbtgt/HADOOP.COM@HADOOP.COM
        renew until 08/27/19 15:41:28
  1. 销毁凭证
sh
[root@hadoop101 ~]# kdestroy
[root@hadoop101 ~]# klist   
klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_0)