快轉到主要內容

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強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。