單位的一臺Windows Server 2008 R2的服務器上啟用了遠程桌面服務,這樣便于管理員遠程對其進行管理。最近在運行“msctc.exe”程序對其進行連接時,出現“遠程桌面由于以下原因之一無法連接到遠程計算機,未啟用對服務器的遠程訪問,遠程計算機關閉,在網絡上計算機不可用,確保打開遠程計算機,連接到網絡并且啟用遠程服務”的提示。造成無法遠程該機的情況。
處理這樣的故障時,需要熟悉遠程桌面的連接過程,才可以有針對性加以解決。
當客戶端運行連接程序試圖訪問服務器時,服務器會先進行網絡級別認證,然后執行服務器驗證。如果服務器上開啟了Windows防火墻的話,就必須通過防火墻的安全驗證,才允許客戶端進行連接。當服務器開啟了遠程桌面后,就會開啟TCP 3389端口,如果修改了該連接端口,必須使用新的端口進行連接。
當滿足以上條件后,服務器還需要對連接進行必要的安全等級及加密等級設定,對客戶端進行檢測。如果客戶端沒有足夠的訪問權限,也無法進行連接。當用戶連接到目標服務器后,服務器會根據本地策略機制,對用戶的登錄行為進行管控,如果用戶違反了設定的安全策略,就會被拒之門外。
滿足了這些條件后,還需要確認客戶端是否擁有否登錄終端服務的權限。當用戶成功連接到遠程桌面后,還需要接受系統對其賬戶權限的審核,只有通過了以上所有步驟,才可以順利連接到遠程桌面。如果其中某些環節出現了問題,就會造成無法登錄的情況。
在服務器中打開控制面板,在系統屬性窗口中的“遠程”面板中選擇“允許運行任意版本遠程桌面的計算機連接(較不安全)”項,就取消了網絡級驗證的管理,點擊“選擇用戶”按鈕,在遠程桌面用戶窗口看到登錄賬戶已經添加進來了,這樣其就處于Remote Desktop Users組中。之后在客戶端進行連接操作,依然出現以上問題。我們知道,利用IPSec安全策略,可以對遠程桌面進行控制,例如只允許特定的IP訪問等,如果客戶訪問違反了預設的安全策略,自然會被系統拒絕。
在管理工具中點擊“本地安全策略”項。在彈出窗口左側選擇“IP安全策略”項,在右側雖然存在一些策略,但是其并沒有和遠程桌面有關,所以可以排除因為IPSec控制策略引發的問題。在該機中開啟了防火墻功能,可以提高系統的安全性。考慮到如果直接關閉防火墻會對系統造成一些不利影響,所以在控制面板中雙擊“Windows防火墻”項,在防火墻設置窗口左側點擊“允許程序通過Windows防火墻”鏈接,在彈出窗口中的“例外”面板中勾選“遠程桌面”項,表示允許使用RDP通訊協議。勾選“安全萬維網服務(HTTPS)”項,表示允許客戶端可以使用基于HTTPS的RDP協議訪問服務器。
之后再次進行了解,發現問題依舊。于是干脆直接關閉了防火墻,在客戶端對該機進行ping探測沒有任何問題,但是仍然無法連接遠程桌面,這就說明上述問題和防火墻配置沒有關系。當啟用了遠程桌面后,系統必然會開啟相關的服務。如果這些服務運行異常,就會造成無法連接的故障。 運 行“services.msc”程序,在服務管理器中可以找 到Terminal Services、T e r m i n a l S e r v i c e s Configuration、Terminal Services UserMode Port Redirector等服務,這些服務的作用包括允許客戶端以互動方式連接到服務器,處理與終端服務及遠程桌面相關的設置,對連接會話進行管理維護,提供設備重定向功能等。經過檢測,這些服務均處于啟用狀態。
為了排除問題,手工停止并重啟這些服務,之后再進行連接,問題依然沒有解決。當客戶機和遠程桌面連接時,必須通過相應的端口才行,系統默認使用TCP 3389端口,在CMD窗口中運行“netstat -ano”命令,查看網絡連接狀態。在其中并沒有發現TCP389端口的蹤影。經過了解,該機管理員沒有對連接端口進行過修改。于是關閉了以上服務,執行“netstat -ano >old.txt”命令,將連接信息保存帶“old.txt”文件中。啟用上述服務,執行“netstat-ano >new.txt”命令,將連接信息保存帶“new.new”文件中。
之后對這兩個文本文件進行比較,沒有發現和遠程桌面有關的端口變動信息,也就是說,雖然和遠程桌面相關的服務處于運行狀態,但是連接端口卻沒有開啟。
看到這種情況,筆者已經大體知道了問題發生的原因了。因為和遠程桌面相關的所有信息都保存在注冊表中,如果因為某些原因導致這些信息受損的話,就會出現無法連接的奇怪故障。運行“regedit.exe”程序,在注冊表編輯器中打開“HKEY_LOCAL_MACHINESYSTEMC u r r e n t C o n t r o l S e tC o n t r o lT e r m i n a l ServerWinStations”分支,在其中保存了和遠程桌面相關的重要信息。對其進行查看后發現,其中只存在名為“Console”的分支,其余內容不翼而飛了,這明顯存在問題。于是找了另外一臺Windos Server 208 R2的主機,將上述注冊表分支的內容導出為獨立的文件(例如“rdp.reg”)。
將其復制到本機上,雙擊后導入注冊表,之后重新查看注冊表內容,發現在上述分支中缺失的信息已補充完整。之后在客戶端運行“mstsc.exe”重新連接,就可順利連接到遠程桌面。這是因為“HKEY_LOCAL_MACHINES Y S T E MCurrent ControlSetControlT e r m i n a l S e r v e rWinStationsRDP-Tcp”分支中保存了和連接端口相關的重要信息,當這些信息受損后,就會出現無法連接的奇怪故障了。
為安全起見,可以對連接端口進行修改,例如將其中的“PortNumber”的值設為特定端口。當客戶端使用遠程桌面連接時,連接“終端服務器IP或者名稱:端口號”即可。