摘要:通過windows遠程Ubuntu的一般方式都是登入Ubuntu的命令行終端界面,但是有時候可能會有登陸Ubuntu的圖形桌面的需求。文本將介紹如何在windows上使用windows自帶的遠程工具(mstsc)遠程登陸Ubuntu的圖形界面窗口。
Ubuntu版本:Linux ubuntu98 5.11.0-37-generic #41~20.04.2-Ubuntu SMP Fri Sep 24 09:06:38 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
第一步:配置遠程工具的環境
windows的遠程桌面使用的協議為RDP,首先需要再Ubuntu的操作系統中安裝xrdp。
sudo apt-get install tightvncserver xrdp
其中,安裝xrdp需要依賴安裝tightvncserver組件。
第二步:遠程控制
在windows的cmd上輸入mstsc打開windows遠程桌面連接工具,輸入需要連接的Ubuntu系統的ip地址,勾選“始終要求憑證”,然后填寫用戶名如下圖:

注意:
1、必須勾選“始終要求憑證”
2、此時僅僅第二步,只能使用root用戶才能登進Ubuntu的圖形桌面,否則登入后是黑屏。
進入控制界面后,輸入用戶密碼,即可登陸成功。
第三步:普通用戶登陸
前面的步驟只有通過root用戶才能進入Ubuntu圖形桌面,如果想要普通用戶也可以登入,還需要修改.ICEauthority文件的權限。將其改為666權限。文件的目錄位於"/home/用戶"下。
注:第三步未實驗成功,並且有的文章說是修改成600權限。
第四步:外網windows主機訪問內網Ubuntu主機
先對下面的步驟進行解釋:
一、由於windows屬於外網主機,Ubuntu是內網主機,想要windows遠程Ubuntu,也就相當於windows與Ubuntu需要進行通信,這時候就需要通過內網穿透等方式來實現。
二、windows自帶的mstsc遠程工具進行遠程時的端口默認是3389,並且在Ubuntu上xrdp遠程工具進行監聽的端口也是3389,windows的mstsc遠程工具和Ubuntu的xrdp遠程工具基於RDP協議實現兩個主機之間的遠程控制。正常情況下兩個主機的端口號無需修改,但是此處由於需要對Ubuntu主機進行內網穿透,當windows訪問Ubuntu實際上是中轉訪問,首先訪問125.64.92.159:21827,然后再轉發到ip對應的Ubuntu主機上特定的綁定端口號。所以windows直接訪問的主機是125.64.92.159,且只能訪問其21827端口。所以windows進行遠程控制時首先需要修改默認的遠程端口號為21827,只有這樣才能與125.64.92.159進行通信。125.64.92.159接收到來自端口21827的數據后,再轉發到內網穿透時綁定好的內網Ubuntu固定端口,默認時該固定端口為22,此處需要修改為3389,邏輯在於125.64.92.159與windows的通信后,下一步就需要與Ubuntu進行通信了,而Ubuntu端的遠程控制監聽端口還是3389。
一、內網穿透
見參考文章:
外網訪問內網實戰(筆記本上的vscode連接公司電腦進行遠程開發)
基於Windows的vscode遠程開發環境搭建+內網穿透教程【windows+vscode+SSH+ubuntu+Xshell+Xftp】
此處我已經實現了這個過程,所以略過。
二、修改windows主機進行遠程連接的端口
注意:所謂內網穿透,實際上就是一個中轉服務器,外網windows無法與內網Ubuntu進行通信,但是中轉服務器可以與Ubuntu進行通信,所以外網windows先與中轉服務器通信,然后中轉服務器再與內網Ubuntu進行通信。此處的windows遠程登陸Ubuntu同理,windows先與中轉服務器通信,所以windows的遠程連接工具先與中轉服務器的監聽端口進行通信,所以此處就需要修改windows遠程通信時的訪問端口號為中轉服務器的遠程控制監聽端口號。然后中轉服務器再與內網Ubuntu進行通信,此時就需要中轉服務器的訪問端口號修改為Ubuntu的遠程控制監聽端口號。這樣windows就可以將信息發送給Ubuntu,同理,Ubuntu發送信息給windows也是如此,該修改就是讓訪問端口號和監聽端口號一一對應。
1、修改windows訪問中轉服務器的訪問端口號
打開windows的注冊表register。
修改計算機\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp和HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp上面的PortNumber。
如下圖所示,原本端口號是3389,此處我將它修改為內網穿透的映射端口號21827。

修改時要注意使用的是十進制還是十六進制方式。
修改端口后,在遠程輸入IP時,就要顯式指定端口號,形如ip:port。
2、修改中轉服務器訪問Ubuntu的訪問端口號
進入內網穿透的配置界面,修改如下,將原來的默認端口22修改為3389。修改好了之后,需要暫停內網穿透服務,然后重新啟動該服務,讓配置生效。配置如下圖:

