NTLM(Windows 身份驗證)連接到 SQL Server 需要哪些埠?
我在一台不在域中且未在混合模式下執行的機器上執行 SQL 伺服器**(它使用**“Windows 身份驗證”執行)。
我正在嘗試從通過 TCP/IP 執行 freetds 的 Linux Web 伺服器連接到它,使用 NTLM 進行身份驗證。
SQL 伺服器上的防火牆非常嚴格。1433 對我的 Web 伺服器開放,但我從 Web 獲得的資訊相互矛盾,說明 NTLM 需要哪些額外埠 (TCP/UDP) 才能成功。目前失敗;我可以在 1433 上通話以請求 NTLM,但實際身份驗證總是失敗。
一位消息人士說 137、138、139,但這些只是 NetBIOS 埠。我真的需要那些嗎?另一個消息來源說 135。還有一些人似乎說 1434 ……我無法確定它的正面或反面。該死的吉姆,我是程序員,不是網路管理員!
編輯:
確切的錯誤資訊:
Msg 18452, Level 14, State 1, Server , Line 0 Login failed for user '(null)'. Reason: Not associated with a trusted SQL Server connection. Msg 20002, Level 9, State -1, Server OpenClient, Line -1 Adaptive Server connection failed
我正在嘗試連接遠端機器使用者名,即“伺服器名\使用者名”。一些消息來源建議我在本地和遠端機器上設置鏡像帳戶,但是本地機器執行的是 Linux,而不是 Windows 下的 IIS。
您需要的唯一埠是 1433 作為 TCP。這是預設的、未命名的 SQL Server 實例用於 TCP 連接的埠。FreeTDS 將在此埠上啟動一個連接,然後在此連接上協商一個 NTLMv2 身份驗證,作為一系列質詢/響應數據包交換。Afaik 不需要任何其他埠。請參閱域登錄。
您提到的所有其他埠都用於命名管道連接,並且 FreeTDS 不支持通過命名管道進行 NT 身份驗證:
FreeTDS 中對域登錄的支持僅限於 TCP/IP 網路協議棧。FreeTDS 目前不支持基於命名管道的 SQL 連接——即通過 DCE/RPC 介面傳輸的連接,該介面在 Win32 機器上使用 TCP 埠 139、445 或 135,具體取決於用於 DCE/RPC 的封裝類型本身。
要作為 NT 域使用者進行身份驗證,您必須以“域\使用者”的形式指定使用者名。如果 SQL Server 在獨立電腦上執行,則“域”是電腦名稱。