我在 Debian 服务器上安装了 MIT Kerberos 1.10,并很高兴我的 Debian 客户端使用它进行身份验证。但是,我在让我的 Windows 7 机器进行同样的操作时遇到了一些麻烦。
我曾经ksetup
按如下方式配置机器:
default realm = EXAMPLE.COM (external)
EXAMPLE.COM:
(no kdc entries for this realm)
Realm Flags = 0x5 SendAddress Delegate
Mapping all users (*) to a local account by the same name (*).
这也改变了系统的名称和工作组设置:
Computer name: lysander
Full computer name: lysander.EXAMPLE.COM
Workgroup EXAMPLE.COM
根据文档,如果某个领域没有 KDC 或密码条目,Windows 将使用 DNS,因此我还配置了以下条目:
_kerberos._udp.example.com. 300 SRV 10 100 88 kdc.example.com.
_kerberos-adm._tcp.example.com. 300 SRV 10 100 749 kdc.example.com.
kdc
有一个指向服务器 IP 地址的 A 记录。
配置 Windows 系统后,我重新启动它并尝试登录,注意到登录屏幕提示我登录域EXAMPLE
。但是,当我尝试以本地用户sam
(应映射到)身份登录时[email protected]
,经过短暂的暂停后,我被告知没有可用的登录服务器来处理登录请求。我在 Windows 事件日志中看不到任何相关信息,检查了客户端和服务器之间的网络流量后,我甚至看不到 Windows 计算机正在尝试联系 KDC。
不过,这也不全是坏消息。让我充满希望的是,我可以使用以下runas
方法获得TGT
:
>runas /user:[email protected] cmd
Enter the password for [email protected]:
Attempting to start cmd as user "[email protected]" ...
在新出现的窗口中:
>klist
Current LogonId is 0:0x14e6649
Cached Tickets: (1)
#0> Client: sam @ EXAMPLE.COM
Server: krbtgt/EXAMPLE.COM @ EXAMPLE.COM
KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
Ticket Flags 0x40e10000 -> forwardable renewable initial pre_authent name_canonicalize
Start Time: 2/14/2012 11:54:24 (local)
End Time: 2/14/2012 21:54:24 (local)
Renew Time: 2/21/2012 11:54:24 (local)
Session Key Type: AES-256-CTS-HMAC-SHA1-96
如果我从该命令提示符启动 PuTTY,我就可以使用 SSPI 通过 ssh 进入其他服务器进行身份验证!
答案1
我发现,如果我在 Windows 屏幕上输入完整的用户名,[email protected]
那么登录就可以正常工作;sam
否则EXAMPLE\sam
就不行。我找不到任何可以证实这是预期行为的东西,但它与仔细阅读以下输出的结果一致ksetup
:
Mapping all users (*) to a local account by the same name (*).
即,如果您以 身份登录,则将登录[email protected]
本地帐户;这并不意味着您可以以 身份登录并让系统以 身份通过 KDC 对您进行身份验证。sam
sam
[email protected]