kinit相关命令(转发)
原文:
生成keytab后,使用该文件认证
认证的命令如下:
kinit -kt /xxx/xxx.keytab xxx@xxx.xxx.com 认证后,kerberos就给这个用户一个有效期,用klist命令可以看到这个有效期 klist -kt /xxx/xxx.keytab
可以用chmod给其他用户加上r权限,这样其他用户也能使用这个keytab文件
配合svn命令一起用,在有效期内就不需要每次都去输入密码,可以写在python文件里,去执行命令, 比如用脚本执行svn指令自动更新这种应用场景。
kinit -kt /xxx/xxx.keytab xxx@xxx.xxx.com;svn up
Ticket 管理
Kerberos Ticket的若干属性:
- forwardable 简单来讲,KDC可以基于该类型TGT发放新的TGT,即使 network address不同。这样不需要再次输入密码。
- proxiable 类似于forwardable,但是不同的是只允许service继承client的认证
- proxy
- postdated
- Renewable 用户不需要重新输入密码就可以获得新的 session key. 但是这种TGT有过期时间。
- invalid
- hardware authentication 申请使用硬件的Ticket认证
- okay as delegate ticket指定的服务器可以用作delegate determined by the policy of that realm
- anonymous ticket is one in which the named principal is a generic principal for that realm; it does not actually specify the individual that will be using the ticket. This ticket is meant only to securely distribute a session key.
用 kinit 获得Ticket
如果你的登录系统集成了Kerberos v5,那么登录时自动获得kerberos ticket. 否则,必须显示获取,比如用 kinit。类似,如果 ticket过期了,kinit可以申请新的ticket.
By default, kinit假设你想要与自己名字相同并加上default realm的pricipal的ticket。
shell% kinit Password for jennifer@ATHENA.MIT.EDU: <-- [Type jennifer‘s password here.] shell%
如果想要申请 forwardable ticket,可以
shell% kinit -f Password for jennifer@ATHENA.MIT.EDU: <-- [Type your password here.] shell% shell% kinit -f -l 3h david@EXAMPLE.COM Password for david@EXAMPLE.COM: <-- [Type david‘s password here.] shell%
用 klist 查看 ticket
当你第一次获得 ticket, 那么只能是TGT,看起来如下:
shell% klist Ticket cache: /tmp/krb5cc_ttypa Default principal: jennifer@ATHENA.MIT.EDU Valid starting Expires Service principal 06/07/04 19:49:21 06/08/04 05:49:19 krbtgt/ATHENA.MIT.EDU@ATHENA.MIT.EDU shell%
如果连接到其他机器上,比如:daffodil.mit.edu,但是在同一个realm,klist会得到
shell% klist Ticket cache: /tmp/krb5cc_ttypa Default principal: jennifer@ATHENA.MIT.EDU Valid starting Expires Service principal 06/07/04 19:49:21 06/08/04 05:49:19 krbtgt/ATHENA.MIT.EDU@ATHENA.MIT.EDU 06/07/04 20:22:30 06/08/04 05:49:19 host/daffodil.mit.edu@ATHENA.MIT.EDU shell%
当jennifer用ssh程序登陆主机daffodil.mit.edu,ssh程序将jennifer的TGT给KDC,并请求主机ticket,这样jennifer不用再输入密码。
klist有各种flag,具体可以通过 man klist 查看。
用 kdestory 销毁ticket.
由于ticket可能被偷走,这样离开机器的时候可以顺便销毁ticket.
shell% kdestroy shell%
其他命令
增加用户,带随机密码的
sudo /usr/sbin/kadmin.local -q 'addprinc -randkey kafka/10.211.55.5@EXAMPLE.COM'
sudo /usr/sbin/kadmin.local -q 'addprinc -randkey zookeeper/127.0.0.1@EXAMPLE.COM'
添加到密钥库
sudo /usr/sbin/kadmin.local -q "ktadd -k /var/kerberos/krb5kdc/kafka.keytab kafka/10.211.55.5@EXAMPLE.COM”
sudo /usr/sbin/kadmin.local -q "ktadd -k /var/kerberos/krb5kdc/kafka.keytab kafka/weiwei@EXAMPLE.COM’
sudo /usr/sbin/kadmin.local -q "ktadd -k /var/kerberos/krb5kdc/kafka.keytab zookeeper/10.211.55.5@EXAMPLE.COM”
sudo /usr/sbin/kadmin.local -q "ktadd -k /var/kerberos/krb5kdc/kafka.keytab zookeeper/127.0.0.1@EXAMPLE.COM”
sudo /usr/sbin/kadmin.local -q "ktadd -k /var/kerberos/krb5kdc/kafka.keytab clients@EXAMPLE.COM”
查看数据库密钥
klist -t -e -k /var/kerberos/krb5kdc/kafka.keytab
查看方式2
ktutil
rkt /var/kerberos/krb5kdc/kafka.keytab
初始化密钥
kinit -kt /var/kerberos/krb5kdc/kafka.keytab kafka/10.211.55.5@EXAMPLE.COM
启动kerberos
service krb5kdc restart
chkconfig krb5kdc on
启动kadmind
kadmind
进入kerberos 控制台
kadmin.local 或 kadmin
创建数据库
kdb5_util create -r HADOOP.COM -s
启动kdc服务
service krb5kdc start
启动kadmin服务
service kadmin start
修改当前密码
kpasswd
初始化princle
kinit -k -t /home/chen/cwd.keytab test@HADOOP.COM
通过keytab文件认证登录
kinit -kt /home/chen/cwd.keytab test@HADOOP.COM
查看keytab
klist -kt /home/chen/cwd.keytab
清除缓存
kdestroy
生成随机key的principal
addprinc -randkey root/master@HADOOP.COM
生成指定key的principal
addprinc -pw **** admin/admin@HADOOP.COM
查看principal
listprincs
修改admin/admin的密码
cpw -pw xxxx admin/admin
添加/删除principle
addprinc/delprinc admin/admin
直接生成到keytab
ktadd -k /home/chen/cwd.keytab test@HADOOP.COM
xst -norandkey -k /home/chen/cwd.keytab test@HADOOP.COM
#注意:在生成keytab文件时需要加参数”-norandkey”,否则会导致直接使用kinit test@HADOOP.COM初始化时会提示密码错误。
Kerberos 命令
本节列出了 Kerberos 产品中包含的部分命令。
表 27-2 Kerberos 命令
|