Kerberos 票证 "Expired";找到旧的,而不是新的票

Kerberos ticket "Expired"; Finding old, not new ticket

我正在尝试让 Kerberos 连接到我 Mac (Big Sur) 上的 MS SQL 数据库。我一直在按照说明进行操作 here。我的 Kerberos 身份验证连接曾经有效。当我最近尝试它们时,它们停止工作了。 可能是由于升级了 OS。

根据说明,我有一个看起来像这样的 /etc/krb5.conf 文件:

[libdefaults]
  default_realm = DOMAIN.COMPANY.COM
 
[realms]
DOMAIN.COMPANY.COM = {
   kdc = dc-33.domain.company.com
}

当我进入我的终端时 运行 kinit username@DOMAIN.COMPANY.COM 它会提示我输入密码。成功输入密码后,我立即按照建议 运行 klist 命令,我得到了这样的信息:

Credentials cache: API:1234A5B6-7C8D-9EF0-B1F9-ED757F2418F4
        Principal: username@DOMAIN.COMPANY.COM

  Issued                Expires        Principal
Apr  5 09:02:23 2022  >>>Expired<<<  krbtgt/DOMAIN.COMPANY.COM@DOMAIN.COMPANY.COM

这看起来像是我机器上某处的旧 ticket/credential(我在 4 月 8 日写的)。旧票“已过期”。为什么 klist 命令不检索最近的 kinit 凭据?什么会导致这个?我该如何解决?

我尝试过的事情

天真地,在我所有的 Kerberos 连接问题开始时,在出现此错误之前,我认为我需要 update/upgrade Kerberos。所以我用 brew install krb5 安装了 Kerberos。不幸的是,我认为这只是混淆了 OS,因为 Kerberos 然后安装在 2 个位置。

我看到操作系统可能需要“知道”在混淆时在哪里可以找到 Kerberos 文件(参见上面的要点)。因此,我将以下行添加到我的 .zshrc 文件中。

export PATH=/usr/local/opt/krb5/bin:$PATH
export PATH=/usr/local/opt/krb5/sbin:$PATH
export LDFLAGS="-L/usr/local/opt/krb5/lib $LDFLAGS"
export CPPFLAGS="-I/usr/local/opt/krb5/include $CPPFLAGS"

这些行在我仍然安装了 Homebrew 版本的 Kerberos 时有所帮助,但我从 运行 brew uninstall krb5 开始安装,现在它们没有帮助(见下一段)。

我使用此命令 sudo find / -name "krb5" 在我的终端中搜索了 krb5 文件夹。当我搜索长长的结果列表时,我找到了几个 krb5 文件夹,但其中 none 个文件夹有 binsbinlibinclude 中的目录。因此,似乎在 brew uninstall krb5 命令期间,这些文件以及 /usr/local/Cellar.

中的文件已从我的系统中删除

我还没有尝试在 instruction page 上安装“先决条件”,因为我的 Kerberos 过去已经可以使用了。所以,我假设先决条件应该已经到位,除非它们在我的 OS 更新期间发生了变化。由于 brew install 尝试创建的问题,我犹豫要不要尝试。

结论

很明显 Kerberos 仍然安装在我的机器上的某个地方,因为它会在 kinit 之后提示我输入密码并且知道输入的密码是否有效。凭据在创建后立即“过期”。我该如何解决这个问题?

installing 和 uninstalling kerberos 似乎扰乱了您的某些 OS 设置。这与最近的 OS 更新相结合可能需要重新启动,如果您还没有这样做的话。