You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更新Kerberos缓存以存储多票据实现多设备同时认证

实现Kerberos多票据缓存与访问的详细步骤

嘿,作为Kerberos新手遇到这个问题太正常了!默认的File缓存确实只能存一张票据,咱们换个支持多票据的缓存类型就行,下面一步步来:

1. 选择并配置支持多票据的缓存类型

Kerberos提供了两种常用的多票据缓存方案,推荐优先用内核密钥环(KEYRING),因为它更安全且持久;如果不想用密钥环,也可以用目录缓存(DIR)。

修改krb5.conf配置

找到你的krb5.conf文件(通常在/etc/krb5.conf),编辑[libdefaults]段的default_ccache_name:

方案一:使用KEYRING缓存(推荐)

替换成以下配置:

[libdefaults]
# 其他原有配置保持不变
default_ccache_name = KEYRING:persistent:%{uid}
  • persistent:表示票据会持久化存储,重启系统后依然保留
  • %{uid}:自动替换为当前用户ID,确保不同用户的票据相互隔离,不会冲突

方案二:使用DIR缓存

如果不想依赖内核密钥环,可以用目录缓存,每个票据会存在单独的文件里:

[libdefaults]
# 其他原有配置保持不变
default_ccache_name = DIR:/var/tmp/krb5cc_%{uid}

这个目录会自动创建,每个票据对应一个以krb5cc_<uid>:<序号>命名的文件。

配置修改后,保存文件即可,不需要重启服务,后续kinit会自动读取新配置。

2. 获取多张Kerberos票据

现在用kinit命令获取不同主体(principal)的票据时,不会再覆盖旧票据,而是都存在缓存里:

  • 获取第一个用户的票据:kinit user1@EXAMPLE.COM(输入对应密码)
  • 获取第二个用户的票据:kinit user2@EXAMPLE.COM(输入对应密码)

3. 查看已存储的所有票据

用klist命令就能列出缓存里的所有票据,直接运行:

klist

输出会显示每个票据的主体、有效期、缓存类型等信息。如果是DIR缓存,还能看到每个票据对应的文件路径。

4. 指定使用特定票据连接设备

当你需要用某张特定票据连接设备时,有两种方式:

方式一:用环境变量指定缓存

在执行连接命令前,通过KRB5CCNAME环境变量指定要使用的票据:

  • 对于KEYRING缓存:
KRB5CCNAME=KEYRING:persistent:1000:user1@EXAMPLE.COM ssh server1.example.com

(把1000换成你的用户ID,user1@EXAMPLE.COM换成目标主体)

  • 对于DIR缓存:
KRB5CCNAME=/var/tmp/krb5cc_1000:1 ssh server2.example.com

(krb5cc_1000:1是klist里显示的对应票据文件)

方式二:用kswitch切换默认票据

如果你想临时把某张票据设为默认,后续操作自动使用它,可以用kswitch命令:

kswitch user2@EXAMPLE.COM

之后运行ssh、scp等命令时,会自动使用这个默认票据。

5. 验证配置是否生效

  1. 先清空旧的File缓存(如果之前用过):kdestroy
  2. 用kinit获取两个不同主体的票据
  3. 运行klist,如果能看到两个不同的票据条目,就说明配置成功了!

新手注意事项

  • 确保krb5.conf的权限是644,属主为root,避免权限不足导致的缓存读写问题
  • KEYRING的persistent类型票据会一直保留,直到你用kdestroy -p user1@EXAMPLE.COM手动删除特定票据,或者kdestroy清空所有票据
  • DIR缓存的文件会存在/var/tmp,系统定期清理临时文件时可能会被删除,所以如果需要长期保留,建议换个目录

内容的提问来源于stack exchange,提问作者Suja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 19:17:39