快轉到主要內容

WayVNC使用教學,支援Linux Wayland協定的VNC遠端桌面

Linux系統 Linux好用軟體 VNC Remote Desktop Raspberry Pi
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

請參考: Linux開源免費的遠端桌面列表

本文Ivon介紹如何設定Wayland專用的VNC伺服器,從電腦連線到遠端Linux桌面。

如果Linux桌面環境顯示協定使用Wayland,傳統的VNC伺服器就行不通了,因其依賴X11環境,此時要改用「WayVNC」這個新技術。

WayVNC是針對Wayland協定實作的VNC伺服器,支援使用wlroots寫成的Wayland合成器,例如Sway、Wayfire、river、Hyprland、Phosh、SXMO。

WayVNC不支援GNOME、KDE Plasma、XFCE、LXQT等桌面環境。

有什麼裝置會使用wlroots的合成器當桌面環境呢?這裡有個值得一提的例子,樹莓派的Raspbrry Pi OS在2023年升級到Bookworm後,便改採Wayland合成器「Wayfire」作為預設桌面環境。所以想延續VNC的使用模式的話,除了自行把X11套件裝回來以外,就得用WayVNC了。

1. 環境
#

  • 電腦:Ubuntu 22.04
  • 樹莓派5:Raspberry Pi OS 12 Bookworm,桌面環境Wayfire。沒有連接到實體螢幕。

2. 安裝WayVNC
#

WayVNC由any1開發,原始碼和說說明文件位於 Github,多個Linux發行版都有收套件。

  1. 用SSH登入樹莓派,從套件庫安裝WayVNC:
sudo apt install wayvnc

Raspberry Pi OS 12可以執行sudo raspi-config,在Interface Options → VNC選項開啟內建的WayVNC服務。

這裡我採用手動設定的方式。

  1. 為了方便日後啟動,我將WayVNC服務寫成一個指令稿
cd ~
touch startvnc.sh
  1. 編輯指令稿
vim startvnc.sh
  1. 首先,如果樹莓派沒有連線到到實體螢幕,那就是以headless模式執行。執行WayVNC前要先設定環境變數
 export WLR_BACKENDS=headless
 export WLR_LIBINPUT_NO_DEVICES=1
 export WAYLAND_DISPLAY=wayland-1
  1. Raspberry Pi OS的Wayfire就算沒有螢幕也會在開機後自動執行,故沒有必要在指令稿啟動Wayfire。

不過若是安裝其他桌面環境的話,得確保預設的顯示管理器為LightDM,這樣Wayfire才會自動啟動。(自動登入桌面環境的具體選項定義在/etc/lightdm/lightdm.conf

sudo systemctl enanble lightdm
  1. 接著是啟動WayVNC的指令。0.0.0.0代表將允許任意IP連線進來,5901為通訊埠。
wayvnc 0.0.0.0 5901 &

# 如果要看錯誤訊息,加上`-v`選項。
  1. 儲存指令稿。

  2. 如果有裝防火牆,開放通訊埠

sudo ufw allow 5901
sudo ufw reaload

3. 啟用傳輸加密
#

如果你只是在自家區域網路測試,用不著開加密。

VNC預設是明碼傳輸的,可以被任意攔截,且WayVNC不能只透過密碼驗證,還得自行建立憑證。

你可以使用VeNCrypt或RSA-AES加密,甚至是透過SSH Forwarding建立加密通道。

  1. 這裡使用RSA-AES,使用以下指令生成金鑰,並儲存到~/.config/wayvnc/
mkdir ~/.config/wayvnc/config

ssh-keygen -m pem -f ~/.config/wayvnc/rsa_key.pem -t rsa -N ""
  1. 編輯WayVNC的設定檔
vim ~/.config/wayvnc/config
  1. 設定帳號名稱和連線密碼
use_relative_paths=true
address=0.0.0.0
enable_auth=true
username=user
password=password
rsa_private_key_file=rsa_key.pem

4. 從電腦端連線到WayVNC
#

  1. 安裝一個VNC客戶端,因為Remmina不支援RSA,所以我選擇TigerVNC Viewer。
sudo apt install tigervnc-viewer
  1. 執行遠端裝置上的指令稿,啟動WayVNC
chmod +x startvnc.sh
bash ./startvnc.sh
  1. 開啟TigerVNC Viewer,協定選取VNC,輸入遠端裝置的IP:5901即可連線。

  2. 終止WayVNC的指令:

sudo killall wayvnc

相關文章

如何給Chromium瀏覽器啟用Google帳號同步功能
Linux系統 Linux好用軟體 Google Chrome Raspberry Pi
Weylus使用教學,讓平板當電腦第二螢幕,支援無線手寫筆輸入
Linux系統 Linux好用軟體 Remote Desktop Linux Windows MacOS
四款Linux開源免費的遠端桌面軟體比較
Linux系統 Linux好用軟體 Remote Desktop Linux

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。