
我配置了一些 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 網域的權限。
我打開了 putty 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.
答案1
在屬於 Active Directory 網域的 Windows 電腦上,使用者在登入 Windows 時會收到 Kerberos 票證授予票證,如果在 PuTTY 設定連線|SSH|Auth|GSSAPI 中啟用了 GSSAPI 驗證,則 PuTTY 可以使用該票證進行驗證(以及它在GSSAPI 之前嘗試的其他驗證方法,例如透過Pageant 的公鑰,未在Connection|SSH|Auth 中設定或停用)。
[如果您還需要票證委託(例如,登入後在伺服器上安裝基於 Kerberos 的檔案系統),請確保在 PuTTY 中也啟用了 GSSAPI 委託,和您登入的伺服器在「委派」標籤的 Active Directory 中標記為「信任此電腦以委派任何服務(僅限 Kerberos)”,但預設並非如此。奇怪的是,AD 中的後者信任設定只需要從 Windows 用戶端(如 PuTTY)進行委派;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 密碼,因此最好從啟動資料夾連結它。
更新:從 Windows 10 版本 21H1 和 Windows Server 2022 開始,適用於 Windows 的 OpenSSHWindows 內建的(版本 8.1 或更高版本)用戶端和伺服器現在也支援 GSSAPI 驗證和委派(即ssh -K
)。因此,如果您所需要的只是這些,那麼從 2021 年開始,您不再需要安裝 PuTTY 和 MIT Kerberos。
答案2
首先仔細檢查執行 PuTTY 的 Windows 機器上的 klist 輸出是否顯示有效的 TGT。然後在 PuTTY 會話的配置中,確保嘗試 GSSAPI 身份驗證已啟用Connection - SSH - Auth - GSSAPI
。最後,確保將其配置為在 中自動使用您的使用者名稱登入Connection - Data
。您可以明確指定使用者名稱或選擇單選按鈕使用系統使用者名稱。
從歷史上看,這就是我透過 Kerberos 進行無密碼 SSH 登入所需要做的全部工作。
答案3
問題出在 Windows Kerberos 設定中。我認為我們的 Active Directory 設定很時髦,我真的不知道我不是 Windows 管理員。
但我透過在 Windows 7 CLI 中使用 ksetup 手動設定 Kerberos 解決了該問題。
重新啟動遠端工作站後,我無法登入我的電腦。這是因為在原始設定中,我的領域網域的TLD 部分始終不存在(網域\使用者),但在我手動設定它之後,我必須更改我的登入網域以反映完整的領域網域(domain.TLD\ user)和我能夠登入我的 Windows PC,儘管現在似乎需要更長的時間進行身份驗證。
在更改之前,ksetup 的輸出僅顯示我的預設領域,並且是小寫的。
我使用“ nslookup -type=SRV _kerberos._tcp.domain.TLD ”來取得我的領域的所有 kdc 伺服器。
我沒有設置任何標誌。
我設定映射我的用戶名“ ksetup /mapuser[電子郵件受保護]用戶“
我使用的資源: https://wiki.ncsa.illinois.edu/display/ITS/Windows+7+Kerberos+Login+using+External+Kerberos+KDC
https://www.cgl.ucsf.edu/Security/CGLAUTH/CGLAUTH.html
如果有人有任何建議,我可以向 Windows 管理員提供如何解決此問題(它是否損壞?),我會將其傳遞給 Windows 管理員。