問題描述
通過微軟的RDP協議客戶端,遠程連接Windows實例時,系統提示“出現身份驗證錯誤,要求的函數不受支持(The function requested is not supported)”錯誤。
問題原因
微軟官方2018年5月,更新了憑據安全支持提供程序協議(CredSSP)相關補丁和身份驗證請求方式。當遇到如下一種情景時,就會出現該連接錯誤。
- 情景一:客戶端未更新該補丁,服務器端已更新該補丁且加密Oracle修正的策略為強制更新的客戶端。
- 情景二:客戶端已更新該補丁且加密Oracle修正的策略為強制更新的客戶端,服務器端未更新該補丁。
- 情景三:客戶端已更新該補丁且加密Oracle修正的策略為緩解,服務器端未更新該補丁。
注:
- 未更新該補丁指沒有更新自2018年5月起至今的任意版本補丁(包括最新版本補丁)。
- 已更新該補丁指更新過自2018年5月起至今的任意版本補丁或者所有版本補丁(包括最新版本補丁)。
- 加密Oracle修正的策略步驟為單擊 計算機配置 > 管理模板 > 系統 > 憑據分配 > 加密Oracle修正。更多信息請參考相關文檔步驟。
解決方案
阿里雲提醒您:
- 如果您對實例或數據有修改、變更等風險操作,務必注意實例的容災、容錯能力,確保數據安全。
- 如果您對實例(包括但不限於ECS、RDS)等進行配置與數據修改,建議提前創建快照或開啟RDS日志備份等功能。
- 如果您在阿里雲平台授權或者提交過登錄賬號、密碼等安全信息,建議您及時修改。
方法一 :服務器端允許任意版本的遠程桌面連接
由於Windows Server系統版本較多,且各版本之間操作略有差異,此處分別以Windows Server 2008 R2、Windows Server 2012 R2和Windows Server 2016三個主流版本為例,步驟如下。
Windows Server 2008 R2系統版本
- 通過遠程連接登錄Windows實例,打開 開始 ,右鍵單擊 計算機,選擇 屬性。
- 在系統控制面板中,單擊 遠程設置,在彈出的 遠程桌面 選項中選擇 允許運行任意版本遠程桌面的計算機連接(較不安全) 並單擊 確定。
Windows Server 2012 R2系統版本
- 通過遠程連接登錄Windows實例,打開 開始 界面,右鍵單擊 這台電腦,選擇 屬性。
- 在系統控制面板中,單擊 遠程設置,在彈出的 遠程桌面 選項中取消選擇 僅允許運行使用網絡級別身份驗證的遠程桌面的計算機連接(建議) 並單擊 確定。
Windows Server 2016系統版本
- 通過遠程連接登錄Windows實例,打開 開始 界面,單擊 Windows系統,右鍵單擊 此電腦,選擇 更多 > 屬性。
- 在系統控制面板中,單擊 遠程設置,在彈出的 遠程桌面 選項中取消選擇 僅允許運行使用網絡級別身份驗證的遠程桌面的計算機連接(建議) 並單擊 確定。
方法二 :Windows安全更新
注:
- 此處以Windows Server 2016系統版本為例,其他Windows系統版本操作類似。
- 如果您的客戶端是Windows系統,請同樣執行如下操作。
- 通過遠程連接登錄Windows實例,搜索並打開 Windows 更新 頁面,單擊 檢查更新 下載更新。
- 等待更新下載和安裝。
提示:如果需要手動安裝CredSSP對應安全更新包,請參考 微軟官網地址進行選擇對應版本的安全更新下載。
- 重啟實例或重啟本地計算機以完成安裝更新。
方法三:修改注冊表
提示:此處以Windows Server 2016系統版本為例,其他Windows系統版本操作類似。
當客戶端或服務器端完成CredSSP相關補丁的更新后,請選擇以下一種方式修改其注冊表。
警告:
手動修改
- 登錄Windows實例或者本地計算機,單擊 開始 > 運行,輸入
regedit
,單擊 確定。 - 單擊 HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > Windows > CurrentVersion > Policies > System > CredSSP > Parameters。
- 如果 CredSSP 項或者 Parameters 項不存在,請新建 CredSSP 項或者 Parameters 項,在 Parameters 項下新建 REG_DWORD 類型的 AllowEncryptionOracle 值,並設置數據為
2
。 - 重啟實例或重啟本地計算機。
腳本修改
- 登錄Windows實例或者本地計算機,以管理員身份運行
Windows PowerShell
,執行如下腳本。New-Item -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System -Name CredSSP -Force New-Item -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP -Name Parameters -Force Get-Item -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters | New-ItemProperty -Name AllowEncryptionOracle -Value 2 -PropertyType DWORD -Force
- 重啟實例或重啟本地計算機。
注:若您優先使用本方法修改了注冊表,隨后又更新了客戶端和ECS實例安全補丁,我們建議您將
AllowEncryptionOracle
的值設為0
或者1
以獲得更高的安全性。