Kerberos
kerberos里面有两个理念,分别是王国(realm)和领域domain
安装过程中,kdb5_util create -s 将会等待很长时间。
异常:Cannot contact any KDC for realm
首先是要确包Hosts文件中已经做了realm的相关映射;
然后就是kinit一定是要root/localhost,就是和你当初注册的时候是一样的才行。
Caused by: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]一种可能是因为Cache过期,通过sudo klist来查看主体的超时时间;
如果想要看keytab文件里面的主体情况可以通过klist -e -k XXX.keytab来查看
-e代表显示加密类型,一个主体将会有多种加密;-k 代表keytab,后面紧跟着keytab的路径
验证主体是否可以被keytab包含:
kinit -k -t hdfs.keytab hdfs/master@HADOOP.COM
-k代表使用keytab,-t代表keytab文件,紧跟着keytab文件路径,最后一个是主体名称;
Kerberos的用户名是由三部分组成:hdfs,是用户名,emr*是指本机的”hostname",@之后则是domain_name,是在/etc/krb5.conf里面配置的内容。
Login failure for hadoop/master@HADOOP.COM from keytab /etc/hasec/hadoop.keytab: javax.security.auth.login.LoginException: Unable to obtain password from user
我的这个问题是因为生成的keytab文件的默认权限是root,需要修改为hadoop用户权限问题解决
javax.security.auth.login.LoginException: Checksum failed
可以采用kinit -k -t XXX.keytab user/hostname@YYY.com来对keytab文件进行验证是否可以通过KDC的校验。
kerberos但是生成了keytab就会随机的生成密码(网调说是添加到krb5.keytab文件),所以admin用户(addprinc username方式添加)和这种用于交互的用户(addprinc -randkey username方式添加)一定是要却分开来;之前我就是hadoop/master@HADOOP.COM用户既作为管理用户也作为交流用户,这是有问题的,一定要区分开来。
修改密码指令:change_password
Unable to obtain password from user
因为.keytab文件是root权限,需要通过chown添加当前用户的权限。