klist 是什么
klist 用来查看和清理当前会话的 Kerberos 票据缓存。域环境里绝大多数「访问共享被拒」「提示凭据无效」「改密后仍报错」都能顺着票据找到线索:票据可能还是旧密码签发的、可能对应的服务主体名不对、也可能因为时间偏差而失效。先看票据状态再动其它配置,能省下大量盲目排查。
基本信息
| 适用平台 | Windows Vista 及以后(含 10/11、Server)的 CMD 与 PowerShell |
|---|---|
| 常用命令 | klist 列出票据、klist tgt 看 TGT 详情、klist purge 清除当前会话票据、klist sessions 列出登录会话 |
| 指定会话 | klist purge -li <登录会话号>,系统会话为 0x3e7(需管理员) |
| 请求票据 | klist get <服务主体名> 手动申请某项服务的票据 |
| 典型时机 | 改密后、组成员调整后、SSO 相关功能异常时 |
| 权限要求 | 普通用户可查看与清理自身会话;系统账户票据需管理员 |
典型使用场景
- 改密后仍提示凭据错误:旧票据仍在缓存中被继续使用
- 组成员变更不生效:权限来自旧 TGT,需清除票据并重新认证
- 单点登录异常:浏览器或客户端拿到的服务票据与预期不符
- 服务访问失败:判定是票据申请失败(SPN 问题)还是权限不足
- 时间偏差排障:票据起止时间异常,指向客户端与域控时钟不一致
常用示例
常用示例
klist # 列出当前会话缓存的全部票据
klist tgt # 只看 TGT(用于判断登录会话是否正常)
klist sessions # 列出当前机器上的登录会话与对应票据数
klist purge # 清除当前会话票据,强制重新认证
klist -li 0x3e7 # 查看系统会话(计算机账户)的票据
klist purge -li 0x3e7 # 清除系统会话票据(需管理员,服务类问题常用)
klist get HTTP/web.corp.local # 手动为指定服务申请票据,用于验证 SPN 是否正确
REM 多会话场景下先确认目标会话号,再针对性清理输出字段读法
| 字段 | 含义 | 异常提示 |
|---|---|---|
| 客户端 / Client | 票据属于哪个账户与会话 | 显示的账户与会话身份不符需先确认登录上下文 |
| 服务端 / Server | 票据对应的服务主体名 | 显示为错误的 SPN 会导致访问被拒 |
| 票证标志 / Flags | 如 initial、forwardable、pre_authent | 缺少预期标志说明票据类型不符 |
| 加密类型 | 票据加密算法 | 服务端不支持该算法时握手失败 |
| 开始与结束时间 | 票据有效期 | 时间偏差会导致立即过期或无法申请 |
| 续订时间 / Renew | 票据可续订截止 | 超过续订期需要重新登录获得 TGT |
「改密后一直提示密码错误」最典型的原因就是缓存中的旧票据仍在生效:先 klist purge,再重新登录或触发一次新的认证,问题往往立刻消失。
组成员变更后需要新的 TGT 才会体现在令牌里:清除票据并重新登录(注销后登录)才会生效,仅刷新权限或等待不会自动更新已签发的票据。
配合排障的动作
配合排障的动作
klist tgt # 1. 查看 TGT 是否正常、是否临近过期
klist purge # 2. 清票据,触发重新认证
REM 3. 重新访问服务,若仍失败则检查服务端记录
REM 4. 用 setspn 核对服务主体名是否注册正确
REM setspn -L SRV01
REM 5. 核对时间偏差:客户端与域控时钟差超过约 5 分钟会导致认证失败
REM w32tm /query /status
REM w32tm /stripchart /computer:DC01 /samples:3清除票据会让当前会话对已有服务的访问重新认证,正在执行的长事务或文件操作可能被中断。生产操作请选在业务窗口,并对服务类会话(0x3e7)尤其谨慎。