服務器遠程登錄失敗-CredSSP報錯

這幾天用 mstsc Windows 遠程桌面的朋友可能會遇到錯誤:

原因在於最近 windows悄悄進行了一次強制更新,然後部分電腦遠程登錄出現這樣的錯誤提示:

出現身份驗證錯誤。
要求的函數不收支持。
遠程計算機:xxx.xxx.xxx.xxx
遠程計算機 這可能是由於CredSSP加密Oracle修正。
若要了解詳細信息,請訪問 https://go.microsoft.com/fwlink/?linkid=866660

出現身份驗證錯誤。要求的函數不收支持。遠程計算機 這可能是由於CredSSP加密Oracle修正。

這都是什麼垃圾翻譯呀,狗屁不通。

其實事情是這樣的:

遠程桌面使用的是“憑據安全支持提供程序協議 (CredSSP) ”,這個協議在未修補的版本中是存在漏洞的。

於是微軟在 2018 年 3 月 13 日在補丁中解決了這個問題,但是默認並沒有強制使用新的協議,因爲一旦強制使用,假如服務器端和客戶端不匹配,將無法連接。所以用戶並不會感知到。

在 2018 年 5 月 8 日,微軟在補丁中將客戶端策略提嚴了一點,mstsc 登錄就會有提示了,就會出現如上的錯誤了,用戶就會知道這事了。

更進一步

關於微軟這次更新,有個配置,更改這個配置可以決定是使用以前的那種連接,還是修補過的連接。這個問題會影響到服務器端和客戶端 ,所以這個配置在服務器端和客戶端均可配置。

針對服務器端

如果這個值是 0,那麼要求客戶端必須是修補了 CredSSP 的。
如果這個值是 1,那麼要求客戶端可以是沒修補 CredSSP 的。
如果這個值是 2,那麼要求客戶端可以是沒修補 CredSSP 的。(和 1 一樣)

2018 年 5 月 8 日,微軟將這個默認值修改爲了 1。

針對客戶端

如果這個值是 0,那麼要求服務端必須是修補了 CredSSP 的。(和 1 一樣)
如果這個值是 1,那麼要求服務端必須是修補了 CredSSP 的。
如果這個值是 2,那麼要求服務端可以是沒修補 CredSSP 的。

2018 年 5 月 8 日,微軟將這個默認值修改爲了 1。

也就是說:

0:服務器端、客戶端都必須是修補了 CredSSP 的。
1:服務器端沒要求客戶端、但是客戶端要求服務器端是修補了 CredSSP 的。 
2:服務器端、客戶端都可以是沒修補 CredSSP 的。

怎麼處理?

根據需求,修改這個值,比如現在還沒準備好全部打補丁,那麼就都修改爲 2。

法一、在服務器端、客戶端中運行 gpedit.msc 中:“計算機配置”->“管理模板”->“系統”->“憑據分配”,這裏面有個“加密 Oracle 修正”,改之。

法二、如果是 Windows 10 家庭版,沒有 gpedit.msc,那麼就直接改註冊表吧:

HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters

新建一個 32 位的、DWORD 類型的 AllowEncryptionOracle,然後爲其設置相應的值。

注意:

註冊表中可能沒有相應的項,那就新建。64 位系統,新建 32 位值才生效。
最後需要重啓。

進步型解決:

客戶端下載微軟補丁解決,下載地址:https://portal.msrc.microsoft.com/zh-cn/security-guidance/advisory/CVE-2018-0886 ,選擇配套自己的機器的補丁包進行下載,安裝後即可使用遠程桌面連接。

此方法屬於順應微軟處理漏洞的方式,服務端客戶端同時打補丁升級系統。因此取名進步型解決方法

方法三:(工程師模式)系統管理員請看下文:

(後續內容部分取自:http://www.cftea.com/m/c.asp?docID=8182

關於微軟這次更新,有個配置,更改這個配置可以決定是使用以前的那種連接,還是修補過的連接。這個問題會影響到服務器端和客戶端 ,所以這個配置在服務器端和客戶端均可配置。

【針對服務器端】

如果這個值是 0,那麼要求客戶端必須是修補了 CredSSP 的。

如果這個值是 1,那麼要求客戶端可以是沒修補 CredSSP 的。

如果這個值是 2,那麼要求客戶端可以是沒修補 CredSSP 的。(和 1 一樣)

2018 年 5 月 8 日,微軟將這個默認值修改爲了 1。

【針對客戶端】

如果這個值是 0,那麼要求服務端必須是修補了 CredSSP 的。(和 1 一樣)

如果這個值是 1,那麼要求服務端必須是修補了 CredSSP 的。

如果這個值是 2,那麼要求服務端可以是沒修補 CredSSP 的。

2018 年 5 月 8 日,微軟將這個默認值修改爲了 1。

也就是說:

0:服務器端、客戶端都必須是修補了 CredSSP 的。

1:服務器端沒要求客戶端、但是客戶端要求服務器端是修補了 CredSSP 的。

2:服務器端、客戶端都可以是沒修補 CredSSP 的。

怎麼處理?

根據需求,修改這個值,比如現在還沒準備好全部打補丁,那麼就都修改爲 2。

方法一、在服務器端、客戶端中運行 gpedit.msc 中:“計算機配置”->“管理模板”->“系統”->“憑據分配”,這裏面有個“加密 Oracle 修正”,改之。

方法二、如果是 Windows 10 家庭版,沒有 gpedit.msc,那麼就直接改註冊表吧:

HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters

新建一個 32 位的、DWORD 類型的 AllowEncryptionOracle,然後爲其設置相應的值。

注意:

註冊表中可能沒有相應的項,那就新建之。

還有我是 64 位系統,但是新建的 64 位值無效,我新建了 32 位值才生效。

最後需要重啓。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章