原文:
生成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 命令
|
