連線 Xfce 遠端桌面
-
安裝 Xfce 以及
xfce4-goodies
軟體包,其中包含一些桌面環境的增強功能:sudo apt install xfce4 xfce4-goodies
-
安裝 TightVNC 伺服器
sudo apt install tightvncserver
-
接下來,執行
vncserver
命令設定 VNC 訪問密碼,建立初始配置檔案,並啟動 VNC 伺服器例項:vncserver
系統將提示你設定密碼,這裡需要填入一個長度小於 8 位的密碼,多餘的位數會被截去。之後你要再輸入一遍相同的密碼以確認密碼。接下來系統會提示你是否要設定提供僅檢視功能的密碼,一般我們不需要這個功能,所以這裡填
n
。 -
此時我們已經設定好了密碼。關閉 VNC 伺服器例項:
vncserver -kill :1 # 關閉 1 號例項
-
接下來我們要修改
xstartup
檔案:mv ~/.vnc/xstartup{,.bak} # 先備份原檔案 vim ~/.vnc/xstartup # 建立新檔案
填入以下配置:
#!/bin/bash xrdb $HOME/.Xresources startxfce4 &
為檔案新增執行許可權:
chmod +x ~/.vnc/xstartup
-
啟動 VNC 伺服器:
vncserver -localhost
由於 VNC 不具有加密功能,因此在公網上直接和 VNC 伺服器通訊並不安全。我們接下來將建立一個 SSH 隧道,透過隧道我們和 VNC 伺服器連線。這種策略將為 VNC 增加一層額外的安全性,因為唯一能夠訪問它的使用者是那些已經具有 SSH 訪問許可權的使用者。
-
建立 SSH 隧道
ssh USER@HOST -L 5901:localhost:5901 -CNf
-L 59000:localhost:5901
: -L 選項指定本地計算機(5901)上的給定埠將被轉發到目標伺服器上給定的主機和埠(localhost:5901
,其中目標伺服器是 HOST)。-C
:此標誌啟用壓縮,有助於減少資源消耗並加快速度。-N
: 此選項告訴 SSH 你不希望執行任何遠端命令。當您只想轉發埠時,此設定很有用。-f
: 此選項表示將 SSH 連線放到後臺。避免長時間不用 SSH 連線時終端失去響應。
-
使用 VNC 客戶端進行連線
如果你使用 macOS,可以使用系統自帶的螢幕共享應用來連線:開啟 Spotlight,搜尋並開啟
Sharing.app
。之後新建一個連線,連線地址填寫vnc://localhost:5901
(你的 VNC 伺服器例項是 1 號,就填 5901,是 2 號就填 5902)如果一切正常,你就能看到 Xfce 的遠端桌面了。
將 VNC 作為系統服務執行(開機自啟)
-
建立 systemd 服務檔案:
sudo vim /etc/systemd/system/vncserver@.service
在名稱末尾的
@
符號將允許我們傳入一個引數,你可以在服務配置中使用。你將使用此引數來指定在管理服務時要使用的 VNC 顯示埠。將以下行新增到檔案中。確保更改
User
、Group
、WorkingDirectory
的值,並將PIDFILE
值中的使用者名稱更改你的使用者名稱:[Unit] Description=Start TightVNC server at startup After=syslog.target network.target [Service] Type=forking User=<USER> Group=<GROUP> WorkingDirectory=/home/<USER> PIDFile=/home/<USER>/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target
-
重啟 systemd 守護程序
sudo systemctl daemon-reload
-
啟用服務檔案
sudo systemctl enable vncserver@1.service
這裡的
1
表示服務應該出現在哪個顯示編號上,這裡為:1
。現在,每次啟動系統時,都會自動啟動一個編號為
:1
的 VNC 伺服器例項。 -
建立 SSH 隧道
在每次連線 VNC 服務之前,你都需要確保已經建立了 SSH 隧道:
ssh USER@HOST -L 59000:localhost:5901 -CNf
Troubleshooting
灰屏問題
檢查 ~/.vnc/xstartup
配置檔案的內容是否正確,以及檔案是否有執行許可權。
參考:How to Install and Configure VNC on Ubuntu 22.04 | DigitalOcean