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