Kerberos:Windows 8.1 上的 kinit 导致票证缓存为空
Kerberos: kinit on Windows 8.1 leads to empty ticket cache
我在新设置的 Windows 8.1 机器上安装了 Kerberos for Windows
。
- 域:未设置
- 工作组:WORKGROUP
我这样编辑 C:\ProgramData\MIT\Kerberos5
目录中的 krb5.ini
文件:
[libdefaults]
default_realm = HSHADOOPCLUSTER.DE
[realms]
HSHADOOPCLUSTER.DE = {
admin_server = had-job.server.de
kdc = had-job.server.de
}
重启后,我做了一个 kinit -kt daniel.keytab daniel
通过控制台对 Realm 进行身份验证。通过 Kerberos Ticket Manager
通过用户名和密码获取票据似乎也能正常工作,因为票据显示在 UI.
我想知道的是,当我调用 klist
时,我得到一个空列表,上面写着 cached tickets: 0
:
这对我来说似乎不正常,因为我的 Ubuntu 计算机在 kinit
之后显示 klist
的有效门票。
我做错了什么?还有更多配置要做吗?有时我读到一个 ksetup
工具,但我不知道这里哪些设置是必要的,哪些不是...
=========================================== ===============
我设置后
[libdefaults]
...
default_ccache_name = FILE:C:/ProgramData/Kerberos/krb5cc_%{uid}
在我的 krb5.conf
中,通过控制台和 Kerberos Ticket Manager 的 kinit
命令在指定路径中创建了一个文件。到目前为止一切看起来都很好。
但是:kinit
命令创建具有非常不同文件名(长与短)的票证,这取决于我是否 运行 控制台作为 "admin"(短名称) (长名称),请参见下面的屏幕截图。 Kerberos 票证管理器仅显示其中一张票证:
- 如果 运行 作为管理员:
- 显示我通过管理控制台创建的工单
- 创建具有短文件名的工单文件
- 如果运行正常:
- 显示我通过 "normal" 控制台创建的工单
- 创建长文件名的工单文件
klist
命令仍然不显示缓存的票证,独立于控制台是否以管理员身份打开。
MIT Kerberos documentation 指出...
There are several kinds of credentials cache supported in the MIT
Kerberos library. Not all are supported on every platform ...
- FILE caches are the simplest and most portable. A simple flat file format is used to store one credential after another. This is the
default...
- API is only implemented on Windows. It communicates with a server process that holds the credentials in memory...
The default
credential cache name is determined by ...
- The
KRB5CCNAME
environment variable...
- The
default_ccache_name
profile variable in [libdefaults]
- The hardcoded default,
DEFCCNAME
但是 AFAIK,在 Windows 上,hard-coded 默认缓存是 API:
,这就是您可以使用 UI. kinit
也默认使用该协议。
我个人永远无法使用 klist
来使用该协议,即使使用“标准”语法,即
klist -c API:
或
set KRB5CCNAME=API:
klist
另一方面,如果您将 KRB5CCNAME
指向 FILE:*****
那么您可以 kinit
然后 klist
门票;但它不会显示在 UI 中,也无法用于网络浏览器等。
如果 klist
命令即使在设置了像 KRB5CCNAME
这样的环境变量(即 set KRB5CCNAME=C:\kerberos_cache\cache\krb5cache
之后也没有显示键,它是一个文件而不是目录。你必须创建父目录),那么你 运行 正在执行的 klist
命令很可能不是来自 C:\Program Files\MIT\Kerberos\bin
中的 MIT Kerberos Windows 安装,而是 klist
来自 Windows 本身的命令 C:\Windows\system32
.
如果您有 cygwin
工具,您可以通过 运行ning which klist
检查。在这种情况下,最简单的解决方案是将 klist.exe
作为新文件复制到 MIT Kerberos 安装的 bin
目录中,即 klist_mit.exe
。如果您使用 运行 klist_mit
命令,则应显示缓存条目。
我在新设置的 Windows 8.1 机器上安装了 Kerberos for Windows
。
- 域:未设置
- 工作组:WORKGROUP
我这样编辑 C:\ProgramData\MIT\Kerberos5
目录中的 krb5.ini
文件:
[libdefaults]
default_realm = HSHADOOPCLUSTER.DE
[realms]
HSHADOOPCLUSTER.DE = {
admin_server = had-job.server.de
kdc = had-job.server.de
}
重启后,我做了一个 kinit -kt daniel.keytab daniel
通过控制台对 Realm 进行身份验证。通过 Kerberos Ticket Manager
通过用户名和密码获取票据似乎也能正常工作,因为票据显示在 UI.
我想知道的是,当我调用 klist
时,我得到一个空列表,上面写着 cached tickets: 0
:
这对我来说似乎不正常,因为我的 Ubuntu 计算机在 kinit
之后显示 klist
的有效门票。
我做错了什么?还有更多配置要做吗?有时我读到一个 ksetup
工具,但我不知道这里哪些设置是必要的,哪些不是...
=========================================== ===============
我设置后
[libdefaults]
...
default_ccache_name = FILE:C:/ProgramData/Kerberos/krb5cc_%{uid}
在我的 krb5.conf
中,通过控制台和 Kerberos Ticket Manager 的 kinit
命令在指定路径中创建了一个文件。到目前为止一切看起来都很好。
但是:kinit
命令创建具有非常不同文件名(长与短)的票证,这取决于我是否 运行 控制台作为 "admin"(短名称) (长名称),请参见下面的屏幕截图。 Kerberos 票证管理器仅显示其中一张票证:
- 如果 运行 作为管理员:
- 显示我通过管理控制台创建的工单
- 创建具有短文件名的工单文件
- 如果运行正常:
- 显示我通过 "normal" 控制台创建的工单
- 创建长文件名的工单文件
klist
命令仍然不显示缓存的票证,独立于控制台是否以管理员身份打开。
MIT Kerberos documentation 指出...
There are several kinds of credentials cache supported in the MIT Kerberos library. Not all are supported on every platform ...
- FILE caches are the simplest and most portable. A simple flat file format is used to store one credential after another. This is the default...
- API is only implemented on Windows. It communicates with a server process that holds the credentials in memory...
The default credential cache name is determined by ...- The
KRB5CCNAME
environment variable...- The
default_ccache_name
profile variable in [libdefaults]- The hardcoded default,
DEFCCNAME
但是 AFAIK,在 Windows 上,hard-coded 默认缓存是 API:
,这就是您可以使用 UI. kinit
也默认使用该协议。
我个人永远无法使用 klist
来使用该协议,即使使用“标准”语法,即
klist -c API:
或
set KRB5CCNAME=API:
klist
另一方面,如果您将 KRB5CCNAME
指向 FILE:*****
那么您可以 kinit
然后 klist
门票;但它不会显示在 UI 中,也无法用于网络浏览器等。
如果 klist
命令即使在设置了像 KRB5CCNAME
这样的环境变量(即 set KRB5CCNAME=C:\kerberos_cache\cache\krb5cache
之后也没有显示键,它是一个文件而不是目录。你必须创建父目录),那么你 运行 正在执行的 klist
命令很可能不是来自 C:\Program Files\MIT\Kerberos\bin
中的 MIT Kerberos Windows 安装,而是 klist
来自 Windows 本身的命令 C:\Windows\system32
.
如果您有 cygwin
工具,您可以通过 运行ning which klist
检查。在这种情况下,最简单的解决方案是将 klist.exe
作为新文件复制到 MIT Kerberos 安装的 bin
目录中,即 klist_mit.exe
。如果您使用 运行 klist_mit
命令,则应显示缓存条目。