自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊聊 Kerberos 的 kinit 命令和 ccache 機(jī)制

網(wǎng)絡(luò) 通信技術(shù)
通過上述分析,我們知道,為解決問題,需要更改服務(wù)端的配置參數(shù)max_renewable_life,需要更改服務(wù)端上述兩個(gè) principal 的 maxrenewlife,并確??蛻舳酥付?kinit -R 時(shí) krbtgt 并沒有過期,才能確保任務(wù)執(zhí)行成功。

1. 前言

大家好,最近遇到了個(gè) kerberos 相關(guān)問題,“客戶端節(jié)點(diǎn)上執(zhí)行 kinit -R 命令報(bào)錯(cuò):KDC can't fulfill requested option while renewing credentials”, 在次跟大家分享下問題的解決方式,和背后的相關(guān)知識點(diǎn),主要涉及到 kerberos 的 kinit 命令和 ccache 機(jī)制。

2. 問題現(xiàn)象與問題日志

  • 問題現(xiàn)象: 客戶端執(zhí)行命令 kinit -R 報(bào)錯(cuò): “KDC can't fulfill requested option while renewing credentials”;
  • 問題日志:查看 KDC 服務(wù)端日志/var/log/krb5kdc.log 可知,上述報(bào)錯(cuò)對應(yīng)的請求是 TGS_REQ,細(xì)節(jié)是 liming@TEST.COM for krbtgt/TEST.COM@TEST.COM,其錯(cuò)誤原因是 ticket not renewable, 即 ticket 不可刷新;

3. 問題原因

那么 “ticket not renewable” 的原因又有哪些呢?主要有以下幾個(gè):

  • 服務(wù)端配置文件 /var/kerberos/krb5kdc/kdc.conf 或 /etc/krb5.conf 中對應(yīng)的 realms 段中沒有配置允許 renew ticket
  • 服務(wù)端生成 krbtgt 這個(gè) principal 時(shí),沒有配置參數(shù) maxrenewlife,即沒有指定其 ticket 的最大可刷新時(shí)長
  • 服務(wù)端生成用戶的 principal 時(shí),沒有配置參數(shù) maxrenewlife,即沒有指定其 ticket 的 最大可刷新時(shí)長(如報(bào)錯(cuò)日志中的 liming@TEST.COM);
  • 客戶端上次成功登陸后,獲得的 krbtgt 這個(gè) service principal 的可刷新時(shí)間已過期,其過期原因是超過了服務(wù)端配置的 maxrenewlife(如報(bào)錯(cuò)日志中的krbtgt/TEST.COM@TEST.COM);
  • 客戶端上次成功登陸后,用戶 principal 的 ticket 已過期,其過期原因是超過了服務(wù)端配置的 ticket_lifetime,該參數(shù)一般配置為 24 h(如報(bào)錯(cuò)日志中的liming@TEST.COM);

4. 問題解決方案與操作步驟

通過上述分析,我們知道,為解決問題,需要更改服務(wù)端的配置參數(shù)max_renewable_life,需要更改服務(wù)端上述兩個(gè) principal 的 maxrenewlife,并確保客戶端指定 kinit -R 時(shí) krbtgt 并沒有過期,才能確保任務(wù)執(zhí)行成功。

  • 服務(wù)端更改或確認(rèn)配置文件/var/kerberos/krb5kdc/kdc.conf 或 /etc/krb5.conf 中,對應(yīng)的 realms 段中需要配置參數(shù)允許刷新:max_renewable_life;
  • 服務(wù)端更過或確認(rèn)上述兩個(gè) principal 的參數(shù) maxrenewlife,示例命令如下:

modprinc -maxrenewlife "1 week" +allow_renewable liming@TEST.COM

modprinc -maxrenewlife "1 week" +allow_renewable krbtgt/TEST.COM@TEST.COM

kadmin.local -q "getprinc krbtgt/TEST.COM@TEST.COM" | grep -i life

kadmin.local -q "getprinc liming@TEST.COM" | grep -i life

  • 上述配置修改或確認(rèn)完畢后,還需要重新登錄以生成新的 ticket,后續(xù)的 kinit -R 命令才能成功執(zhí)行
  • 同時(shí)可以看到,改動 principal 的參數(shù) maxrenewlife 前,klist 不提示 renew until ...,而改動 principal 的參數(shù) maxrenewlife后,klist 會提示 renew until ....,即在次日期之前可以使用 kinit -R 刷新 ticket;

5. 背景知識: kinit 命令與 ccache 機(jī)制

  • 用戶在客戶端通過 kinit 成功登錄 kerberos 后,會將獲得的 ticket-granting ticket 緩存到客戶端的 ccache (credentail cache) 文件中;
  • ccache 文件地址是通過配置文件 /etc/krb5.conf 中的參數(shù) default_ccache_name來配置的,在 linux 操作系統(tǒng)中一般是配置為 FILE:/tmp/krb5cc_%{uid},實(shí)際對應(yīng)文件 /tmp/krb5cc_0 等
  • "kinit -R" 命令,可以用來刷新 ticket-granting ticket,即 tgt;
  • "kinit -R" 命令,只能在 ticket 沒有過期之前,且還在 krbtgt 可刷新時(shí)間之前,刷新 ticket;
  • "kinit -R" 成功刷新 ticket 之后, 會更新 ccache (credentail cache) 文件,大家可以通過 ls -al 命令查看 linux 中該文件的 ctime 確認(rèn)這一點(diǎn);
  • kinit 登錄,對應(yīng)的是 AS_REQ,需要 KDC 中的 Authentication Server (AS) 校驗(yàn)用戶身份,獲得的是krbtgt,對應(yīng) kerberos 日志中的:liming@TEST.COM for krbtgt/TEST.COM@TEST.COM
  • kinit 認(rèn)證完畢后,后續(xù)使用受 kerberos 保護(hù)的服務(wù),比如登錄 hiveserver2時(shí),命令格式為:beeline -u "jdbc:hive2://uf30-2:10000/default;principal=hive/_HOST@TEST.COM", 此時(shí)在底層是一個(gè) TGS_REQ,對應(yīng) kerberos 日志中的:liming@TEST.COM for hive/cdp2@TEST.COM;
  • kinit -R 續(xù)期 tgt,對應(yīng)的是 TGS_REQ, 需要 KDC 中的 Ticket Granting Server (TGS) 的響應(yīng),其效果是刷新了krbtgt,更新了 ccache 文件如 /tmp/krb5cc_0, 對應(yīng) kerberos 日志中的:liming@TEST.COM for krbtgt/TEST.COM@TEST.COM;

[root@uf30-1 ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin/admin@CDH.COM
Valid starting Expires Service principal
11/13/2020 13:08:27 11/14/2020 13:08:27 krbtgt/CDH.COM@CDH.COM
renew until 11/20/2020 13:08:27
[root@uf30-1 ~]# kinit -R
[root@uf30-1 ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin/admin@CDH.COM
Valid starting Expires Service principal
11/13/2020 19:38:15 11/14/2020 19:38:15 krbtgt/CDH.COM@CDH.COM
renew until 11/20/2020 13:08:27


責(zé)任編輯:武曉燕 來源: 明哥的IT隨筆
相關(guān)推薦

2021-12-11 19:00:54

Java中斷機(jī)制

2023-02-24 16:46:25

Glide緩存機(jī)制

2024-02-27 08:05:32

Flink分區(qū)機(jī)制數(shù)據(jù)傳輸

2021-09-26 05:06:04

Node.js模塊機(jī)制

2024-06-11 09:22:51

2023-09-27 07:33:48

Docker命令容器

2022-07-12 08:00:31

命令Kubernetes應(yīng)用程序

2022-05-06 08:26:32

JavaSPI機(jī)制

2021-06-07 08:04:39

Restorecon命令安全

2022-03-03 09:20:08

分布式數(shù)據(jù)庫場景

2025-03-27 02:00:00

SPIJava接口

2021-12-30 22:50:32

KafkaConsumer 源碼

2023-11-06 08:00:38

接口高可用機(jī)制

2020-11-20 07:51:02

JavaSPI機(jī)制

2021-08-10 11:45:57

topCPULinux

2021-05-31 15:53:57

CPU Top命令

2023-08-03 07:34:34

格式化字符串參數(shù)

2022-10-24 00:03:26

GolangNew函數(shù)

2018-12-06 14:56:46

微服務(wù)隔離熔斷

2022-04-11 07:50:58

top 命令Java 系統(tǒng)JVM 進(jìn)程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號