開心一刻
舍長:我的香水不見了!你們快幫着找找啊!
眾人:你還用香水??啥牌子的??
舍長:SIX GOD啊,我只用那個。
眾人:牛逼啊,沒聽過啊,啥樣子啊?.
舍長:六神花露水,你們誰拿了?
眾人。。。
寫在前面
最近幾天瀏覽博客時,無意看到了linux中使用vnc實現windows中訪問linux的桌面服務,類似於windows中的桌面共享,我就閑來無事研究研究linux桌面共享。待查閱了大量博客以及在虛擬機ubuntu20.10中實驗,終於大概弄好了linux桌面共享,且我總共發現了三種linux桌面共享的方式,特地寫在這里,供大家參考。在操作之前,建議換一下國內源。
方法一(簡單又實用)
ubuntu20.10中已經自帶桌面共享的功能,使用的是vino-server實現的,如果虛擬機中安裝的ubuntu是桌面版,那么可以嘗試按照如下方式打開桌面共享。
1. 首先進入ubuntu桌面,點擊Setting -> Sharing -> Screen Sharing
,如下圖所示:
3. 關閉遠程連接加密請求,否則提示"vnc連接提示不支持安全類型":
# 安裝dconf-editor
sudo apt install dconf-editor
4. 進入:org -> gnome -> desktop -> remote access -> require encrytion選擇關閉:
但是此方法有個缺點,vino-server不能在console中運行,這也就意味着如果用戶不能登錄到系統桌面,那么vino-server無法啟動,那么也就無法連接到ubuntu的桌面。例如系統重啟之后是用ssh遠程登錄的,那么此時是無法使用vnc viewer登錄到桌面的,對於使用ubuntu共享桌面的方式登錄系統,如果碰到需要系統重啟的問題,就會很令人頭大,需要跑到服務器跟前去登錄一下桌面才可以。
當然這個問題也是有辦法解決的,犧牲一下系統的安全性就可以了。解決方法如下:
- 查看當前用的是什么桌面管理器:
cat /etc/X11/default-display-manager
我的是/usr/sbin/gdm3
,那么編輯文件:
sudo vim /etc/gdm3/custom.conf
把下面的三行注釋掉,其中AutomaticLogin行修改成自己的用戶名。
WaylandEnable=false
AutomaticLoginEnable = true
AutomaticLogin = user1
重啟電腦就可以登錄了。這種修改方式使得系統啟動時無需輸入賬號密碼即可進入桌面系統。
方法二(安裝xrdp服務)
Xrdp 是一個微軟遠程桌面協議(RDP)的開源實現,它允許你通過圖形界面控制遠程系統。通過 RDP,你可以登錄遠程機器,並且創建一個真實的桌面會話,就像你登錄本地機器一樣。windows系統中默認遠程登錄用的就是RDP協議,在ubuntu中安裝xrdp服務意味着在登錄ubuntu遠程桌面時可以使用windows的遠程桌面軟件。安裝步驟如下:
一、安裝桌面環境
Ubuntu 服務器通常使用命令行進行管理,並且默認沒有安裝桌面環境。如果你正在運行 Ubuntu 桌面版,忽略這一步。
在 Ubuntu 源倉庫有很多桌面環境供你選擇。一個選擇是安裝 Gnome,它是 Ubuntu 20.04 的默認桌面環境。另外一個選項就是安裝 xfce。它是快速,穩定,並且輕量的桌面環境,使得它成為遠程服務器的理想桌面。
運行下面任何一個命令去安裝你選擇的桌面環境:
- 安裝 Gnome
sudo apt update
sudo apt install ubuntu-desktop
- 安裝 Xfce
sudo apt update
sudo apt install xubuntu-desktop
取決於你的系統,下載和安裝 GUI 軟件包,將會花費一些時間。
二、安裝 Xrdp
Xrdp 被包含在默認的 Ubuntu 軟件源中。想要安裝它,運行:
sudo apt install xrdp
一旦安裝完成,Xrdp 服務將會自動啟動。你可以輸入下面的命令,驗證它:
sudo systemctl status xrdp
輸出將會像下面這樣:
默認情況下,Xrdp 使用/etc/ssl/private/ssl-cert-snakeoil.key,它僅僅對“ssl-cert” 用戶組成語可讀。所以為了能夠登錄遠程桌面,運行下面的命令,將xrdp
用戶添加添加到這個用戶組:
sudo useradd xrdp ssl-cert
PS: 我不太明白為什么要執行上述useradd命令,而且執行之后我用自己的普通賬戶登錄仍然無法遠程登錄,但是使用root賬戶是可以的,我目前沒有解決普通賬戶無法登陸的問題。
重啟 Xrdp 服務,使得修改生效:
sudo systemctl restart xrdp
三、Xrdp 配置
Xrdp 配置文件定位在/etc/xrdp目錄。對於基本的 Xrdp 鏈接,你不需要對配置文件做任何改動。
Xrdp 使用默認的 X Window 桌面環境(Gnome or XFCE)。
主要的配置文件被命名為 xrdp.ini。這個文件被分成不同的段,允許你設置全局配置,例如安全,監聽地址,創建不同的 xrdp 登錄會話等。
不管什么時候你對配置文件做出修改,你需要重啟 Xrdp 服務。
Xrdp 使用startwm.sh文件啟動 X 會話。如果你想使用另外一個 X Window 桌面,編輯這個文件。
四、配置防火牆
Xrdp 守護程序在所有的網絡接口上監聽端口3389。如果你在你的 Ubuntu 服務器上運行一個防火牆,你需要打開 Xrdp 端口。
想要允許從某一個指定的 IP 地址或者 IP 范圍訪問 Xrdp 服務器,例如192.168.33.0/24,你需要運行下面的命令:
sudo ufw allow from 192.168.33.0/24 to any port 3389
如果你想允許從任何地方訪問(由於安全原因,這種方式不鼓勵),運行:
sudo ufw allow 3389
想要增加安全,你可以考慮 Xrdp 僅僅監聽 localhost,並且創建一個 SSH 隧道,將本地機器的3389端口到遠程服務器的同樣端口之間的流量加密。
五、連接 Xrdp 服務器
現在你已經設置好你的 Xrdp 服務器,是時候打開你的 Xrdp 客戶端並且連接到服務器。
如果你有一台 Windows 電腦,你可以使用默認的 RDP 客戶端。在 Windows 搜索欄輸入“remote”,並且點擊“Remote Desktop Connection”或者使用“win+R”組合鍵,然后輸入mstsc
。這將會打開一個 RDP 客戶端。在“計算機”區域輸入遠程服務器 IP地址,並且點擊“連接”。
再登錄屏幕,輸入你的用戶名和密碼,點擊“OK”。
一旦登錄,你將看到默認的 Gnome 或者 Xfce 桌面,它應該像下面這樣:
現在你可以從你的本地機器上使用你的鍵盤和鼠標和遠程桌面進行交互了。
方式三(VNCserver)
安裝vncserver的步驟如下:
一、安裝桌面環境和VNCServer
#更新
apt update
#安裝桌面環境
sudo apt install xfce4 xfce4-goodies
#安裝vncserver
apt install tightvncserver
#啟動vncserver
vncserver
隨后按照提示,輸入vncserver登錄時候的密碼並再次輸入確認。
從遠程登錄之后發現桌面一片灰白。看來還需要配置一下vncserver的環境:
二、配置vncserver的參數
#關閉vncserver :1窗口
vncserver -kill :1
#備份原來的配置文件
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
#編輯新的配置文件
vim ~/.vnc/xstartup
在xstartup文件中更新為如下內容:
#!/bin/bash
xrdb $HOME/.Xresources
gnome-sesseion &
然后設置該文檔的權限
chmod u+x ~/.vnc/xstartup
隨后重新啟動vncserver即可連接圖像界面,截圖如下:
PS:這種方法不一定能成功,原因我不是很清楚。我猜測不成功的原因是在啟動的時候需要執行某些文件,但是用戶沒有可執行的權限,所以最后執行不成功。
三種遠程登錄方式比較
vino-server | Xrdp | vnc-server | |
---|---|---|---|
優點 | 系統自帶,配置簡單 | 配置簡單,可用windows自帶的遠程桌面登錄 | 配置簡單,但不一定能成功連接遠程桌面 |
缺點 | 重啟后必須登錄個人桌面后才可啟動 | root用戶登陸不容易出錯,普通用戶容易出錯 | 出錯不好解決 |
綜合我自己嘗試這三種遠程桌面登錄ubuntu的方式,我覺得使用vino-server最方便,在這個基礎上,安裝xrdp服務,然后在windows系統中使用自帶的遠程登錄工具時,使用VNC-any的方式登錄遠程桌面,這樣就可以避免下載vnc viewer,使用起來跟windows遠程登錄方式也無差別。
文中都是我個人的理解,如有錯誤的地方歡迎下方評論告訴我,我及時更正,大家共同進步