[英]MSSQL Server SPN Connections: Linux to MSSQL Server (setspn, kinit, kerberos authentication)
AD 管理員使用 setspn 工具添加 SQL 服務器 SPN 后,linux 服務器無法使用 SPN 使用 MS SQL 服務器 ODBC 驅動程序 18,錯誤為“[HY000] [Microsoft][ODBC Driver 18 for 881299228PIr5 ProvideSSPIr]615在 Kerberos 數據庫中找不到服務器”
我對一台服務器 (dev) 進行了基於 kerberos 的身份驗證,並且我正在嘗試對新服務器 (rel) 實施相同的連接設置。 要配置開發人員,我的 AD 管理員使用 SPN 設置工具設置服務器 SPN:
setspn -S MSSQLSvc/dev:dev_sql_port domain\dev_service_user
我們可以驗證 spn 是否已使用創建
setspn -Q MSSQLSvc/dev*
廣告域上有很多域控制器(大約 7 個,通過使用命令adcli info domain.org
從 linux 服務器確定)。 起初我們無法使用 ODBC 連接到 dev,但幾個月后以下模式開始起作用:
kinit
Password for user@domain.org: ********
然后是使用連接字符串的連接:
Driver={ODBC Driver 18 for SQL Server};Server=dev;Trusted_Connection=yes;Encrypt=No;TrustServerCertificate=yes
AD 管理員使用 rel sql 服務器實例的正確信息,從 rel 的開發設置中復制了所有內容。 我可以使用以下內容為新服務器初始化 kerberos 票證:
kinit -S "MSSQLSvc\rel:rel_port"
Password for user@domain.org: ********
但是,python 模式:
cnxn_str = ("Driver={ODBC Driver 18 for SQL Server};Server=rel;Trusted_Connection=yes;Encrypt=No;TrustServerCertificate=yes")
cnxn = pyodbc.connect(cnxn_str)
給出錯誤:
Error: ('HY000', '[HY000] [Microsoft][ODBC Driver 18 for SQL Server]SSPI Provider: Server not found in Kerberos database (851968) (SQLDriverConnect)')
除了頂部部分之外,對 krb5.conf 配置的更改很小:
[libdefaults]
default_realm = domain.org
dns_lookup_realm = true
dns_lookup_kdc = true
我可以聯系適當的管理員進行已研究的更改,但是,我們(我)有點不知所措,為什么 dev 可以工作,為什么 dev 需要幾個月的時間才能工作,以及為什么 rel 還不能工作。 我們對 rel 進行更改已經 2 周了。
為了解決這個問題,我們確定原始 rel setspn 語句中存在錯字,並且在setspn -L realm\rel_sql_service_account
出了兩個錯誤端口,一個沒有端口。 我們使用了命令
setspn -D MSSQLSvc/rel.domain:wrong_port realm\rel_sql_service_account
setspn -D MSSQLSvc/rel.domain realm\rel_sql_service_account
setspn -S MSSQLSvc/rel.domain:right_port realm\rel_sql_service_account
這有可能是在與最初設置的服務器不同的 windows 服務器上通過命令 window 完成的。 仔細檢查都是一樣的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.