Linux

Putty Kerberos/GSSAPI 身份驗證

  • January 14, 2019

我配置了一些 Linux 伺服器以在 RHEL6 上使用 sssd 通過 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.

在屬於 Active Directory 域的 Windows 電腦上,使用者在登錄 Windows 時會收到他們的 Kerberos 票證授予票證,如果在 PuTTY 配置 Connection|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 Ticket Manager”正在執行,它會在 PuTTY 需要票證時自動提示您輸入 Kerberos 密碼,因此最好從 Startup 文件夾連結它。

引用自:https://serverfault.com/questions/646854