Putty Kerberos/GSSAPI 身份验证

xda*_*xdb 11 linux active-directory kerberos putty gssapi

我在 RHEL6 上使用 sssd 配置了一些 Linux 服务器以使用 Active Directory Kerberos 进行身份验证。我还启用了 GSSAPI 身份验证以实现无密码登录。

但是我似乎无法让 Putty (0.63) 在没有密码的情况下进行身份验证。

GSSAPI 在为 AD 身份验证配置的 Linux 系统(openSSH 客户端)之间工作,使用 .ssh/config 设置启用 GSSAPI。

它也适用于 Cygwin(openSSH 客户端),使用相同的 .ssh/config 设置以及运行 kinit 命令来获取票证。

Samba 在所有 Linux 系统上共享,包括从 Windows 资源管理器工作的主目录,无需密码(我不确定 GSSAPI 是否在那里发挥作用)

我可以尝试解决哪些问题?我的大多数用户都使用 Putty。另外,我不是 Windows 管理员,所以我不能在域控制器上做任何事情。我的账户只有添加服务器到 AD 域的权限。


我打开了腻子 SSH 数据包日志记录。我发现这很有趣,但我不确定如何处理这些信息:

Event Log: Server version: SSH-2.0-OpenSSH_5.3
Event Log: Using SSH protocol version 2
Event Log: We claim version: SSH-2.0-PuTTY_Release_0.63
Outgoing packet #0x0, type 20 / 0x14 (SSH2_MSG_KEXINIT)
Incoming packet #0x0, type 20 / 0x14 (SSH2_MSG_KEXINIT)
Event Log: Doing Diffie-Hellman group exchange
Outgoing packet #0x1, type 30 / 0x1e (SSH2_MSG_KEX_DH_GEX_REQUEST)
Incoming packet #0x1, type 31 / 0x1f (SSH2_MSG_KEX_DH_GEX_GROUP)
Event Log: Doing Diffie-Hellman key exchange with hash SHA-256
Outgoing packet #0x2, type 32 / 0x20 (SSH2_MSG_KEX_DH_GEX_INIT)
Incoming packet #0x2, type 33 / 0x21 (SSH2_MSG_KEX_DH_GEX_REPLY)
Outgoing packet #0x3, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised AES-256 SDCTR client->server encryption
Event Log: Initialised HMAC-SHA1 client->server MAC algorithm
Outgoing raw data at 2014-11-25 00:21:08
Incoming packet #0x3, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised AES-256 SDCTR server->client encryption
Event Log: Initialised HMAC-SHA1 server->client MAC algorithm
Outgoing packet #0x4, type 5 / 0x05 (SSH2_MSG_SERVICE_REQUEST)
Incoming packet #0x6, type 51 / 0x33 (SSH2_MSG_USERAUTH_FAILURE)
...%gssapi-keyex
,gssapi-with-mic
,password.
Event Log: Using SSPI from SECUR32.DLL
Event Log: Attempting GSSAPI authentication
Outgoing packet #0x6, type 50 / 0x32 (SSH2_MSG_USERAUTH_REQUEST)
Incoming packet #0x7, type 60 / 0x3c (SSH2_MSG_USERAUTH_GSSAPI_RESPONSE)
Event Log: GSSAPI authentication initialised
Outgoing packet #0x7, type 61 / 0x3d (SSH2_MSG_USERAUTH_GSSAPI_TOKEN)
Incoming packet #0x8, type 61 / 0x3d (SSH2_MSG_USERAUTH_GSSAPI_TOKEN)
Event Log: GSSAPI authentication initialised
Event Log: GSSAPI authentication loop finished OK
Outgoing packet #0x8, type 66 / 0x42 (SSH2_MSG_USERAUTH_GSSAPI_MIC)
Incoming packet #0x9, type 51 / 0x33 (SSH2_MSG_USERAUTH_FAILURE)
...%gssapi-keyex
,gssapi-with-mic
,password.
Run Code Online (Sandbox Code Playgroud)

Mar*_*uhn 9

在属于 Active Directory 域的 Windows 计算机上,用户在登录 Windows 时会收到 Kerberos 票证授予票证,如果在 PuTTY 配置连接|SSH|Auth|GSSAPI 中启用了 GSSAPI 身份验证,PuTTY 可以使用该票证进行身份验证(以及它在 GSSAPI 之前尝试的其他身份验证方法,例如通过 Pageant 的公钥,未在 Connection|SSH|Auth 中设置或禁用)。

[如果您还需要票证委托(例如,登录后在服务器上挂载 kerberized 文件系统),请确保在 PuTTY 中也启用了 GSSAPI 委托,并且您登录的服务器在委托选项卡的 Active Directory 中标记为“信任这台计算机以委托给任何服务(仅限 Kerberos) ”,默认情况下它们不是。奇怪的是,AD 中的后一种信任设置仅在委派使用 PuTTY 等 Windows 客户端时才需要;Linux“ssh -K”客户端不需要它。]

在不属于 Active Directory 域的自我管理(个人)Windows 计算机上,您仍然可以通过 PuTTY 使用 Kerberos/GSSAPI 身份验证(和票证委托),但您必须自己获取票证。不幸的是,Windows 7 没有安装任何等效的 kinit 程序(供您手动请求票证),而且如果您缺少票证,PuTTY 也不会提示您输入 Kerberos 密码。因此,您必须为 Windows安装MIT Kerberos包,其中包括常用的 kinit/klist/kdestroy 命令行工具,以及简洁的 GUI 工具“MIT Kerberos Ticket Manager”。使用这些来获取您的票,然后 PuTTY 将自动使用 MIT GSSAPI 库而不是 Microsoft SSPI 库,它应该都能正常工作。如果“MIT Kerberos 票证管理器”正在运行,它会在 PuTTY 需要票证时自动提示您输入 Kerberos 密码,因此最好从 Startup 文件夹链接它。