您应该能够附加到屏幕会话,在其中创建一个新窗口/“屏幕”(使用默认配置,您可以通过按来执行此操作C-a C-c
),然后运行kinit && aklog
. 您不需要在现有正在运行的应用程序或类似的“内部”运行它;你只需要在同一个屏幕会话中的某个地方运行它。之后,您可以分离屏幕并注销,屏幕会话应该仍然拥有您的凭据(直到它们过期;您可以使用krenew
它们让它们继续运行更长时间,但不是永远)。
如果您想知道,可以更详细地解释发生了什么。我假设您正在通过 ssh 登录并且正在使用 PAM,但是相同的一般过程也适用于其他设置:
当您第一次登录时,PAM 会为您分配一个 PAG(一种用于存放 AFS 令牌的容器),并在该 PAG 中运行一些与 AFS 令牌相当的东西kinit
并aklog
为您提供 AFS 令牌。然后,您的 shell 在该 PAG 中运行,因此您在该 shell 中运行的所有内容都与该 PAG 及其凭据相关联。这包括screen
您创建的会话。
当您注销时,PAM 配置说要销毁您的凭据,这意味着它会销毁与该 PAG 关联的 AFS 令牌。这就是屏幕会话丢失凭据并无法访问您的主目录的原因:该 PAG 的令牌已被销毁。
稍后,如果您再次登录,则会为您分配一个新的单独 PAG,并再次获得 AFS 令牌。旧屏幕会话仍与另一个 PAG 相关联,即销毁令牌的那个。因此,如果您附加到该屏幕会话,并在其中的某个位置运行kinit
,aklog
这将创建与您第一次登录时的旧 PAG 相关联的新令牌。然后您可以从屏幕会话中分离并注销,然后您当前 PAG 中的代币将被销毁。但是屏幕会话的 PAG 没有受到影响,因为 PAM 和其他任何东西都不再知道该 PAG。因此,它的令牌将继续有效,直到它们过期。