快轉到主要內容

SSH X11 Forwarding教學,將遠端Linux圖形程式拉到本機X視窗執行

分類   Linux系統 Linux好用軟體
標籤   X Window
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

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

遠端Linux沒有圖形界面,但是需要執行圖形程式,該怎麼辦呢?

不如透過X11 Forwarding,將它放到本機Linux的X伺服器執行吧!圖片為在Ubuntu執行Debian伺服器上的Chromium瀏覽器。

1. X11 Forwarding有何用?
#

Linux的圖形環境都是建基於X視窗系統(X11)之上的,有了這套軟體才能跑圖形程式,還有我們熟知的GNOME、KDE桌面環境。

X視窗系統因為具有主從式架構,能有多個X客戶端連線到X伺服端,故能夠自由指定DISPLAY:環境變數,藉由網路透明性(network transparency),在同一網路下的其他電腦顯示圖形程式。

比如,我們可以讓一台headless的A電腦的畫面,顯示在另一台有連接顯示器的B電腦:

# A電腦執行指令,指定使用B電腦的DISPLAY
export DISPLAY=192.168.1.102:0

# A電腦執行指令,在連接顯示器的B電腦顯示xterm程式
xterm

# 你可能還要在B電腦允許其他X客戶端在你的畫面上顯示
xhost +

此時,B電腦就成為了A電腦的X客戶端。執行於X客戶端的圖形程式,渲染工作是由遠端X伺服端負責的,所以依賴OpenGL的程式可以吃到3D加速。

圖片來自getteleport.com

那麼什麼是X11 Forwarding?中文意為X11轉發,將遠端X視窗的畫面轉發到本機顯示。參考下圖,SSH會將遠端X客戶端通過代理傳送到本機。

圖片來自getteleport.com

為什麼X11 Forwarding要搭配SSH使用呢?因為X伺服器與X客戶端之間通訊是沒有加密的,這樣很容易被攔截竄改,所以讓它走SSH加密通道較為保險。於是乎,整個技術就變成了「SSH X11 Forwarding」。

某種程度來說X11 Forwarding可以算是遠端桌面吧,但是它不是VNC那種啟動整個Linux桌面環境的方案,反而比較像是跑單一應用程式視窗用的。還有X11畫面傳輸沒有經過任何壓縮,也因此X11 Forwarding比VNC吃頻寬,不適合網路連線緩慢的情況使用(其實就算是區域網路,X11 Forwarding的效率也是非常差勁,比不上VNC)。

2. X11 Forwarding運作需要的環境
#

第一,SSH伺服器和SSH客戶端是必備的。

第二,X11 Forwarding運作條件是客戶端必須執行X伺服器。


理想上遠端和客戶端都是Linux系統比較好操作,因為大部份Linux發行版都有X視窗系統。本文探討的便是Linux對Linux進行X11 Forwarding。

不過X11 Forwarding並無限制一定要用Linux, X11 Forwarding是可以在其他系統運作的。

如果要Linux → Windows,因為Window不是使用X視窗系統,所以要安裝開源的 Vcxsrv跑一個X伺服器,讓遠端Linux的視窗在Windows上執行。

Linux → macOS,請裝 XQuartz

Linux → Android,請裝 Termux X11

Linux → iOS,請裝閉源的 Mocha X11或者 iSH Shell

3. 如何進行X11 Forwarding操作
#

假設遠端伺服器為Debian 12,客戶端為Ubuntu 24.04。

  1. 在要連線的客戶端,也就是Ubuntu,開啟終端機

  2. 使用SSH登入遠端Debian

ssh 使用者名稱@伺服器IP
  1. X11 Forwarding預設是關閉的,所以要編輯sshd設定檔
sudo vim /etc/ssh/sshd_config
  1. 將這裡取消註解,啟用X11 Forwarding
AllowTcpForwarding yes
X11Forwarding yes
X11UseLocalhost yes
  1. 重新啟動SSH服務
sudo systemctl restart sshd
  1. 開一個新的終端機視窗,ssh指令加上-X選項,後面加上要啟動的程式,例如這裡為xterm:
ssh -X 使用者名稱@伺服器IP xterm

4. ssh -X與ssh -Y的差別
#

ssh -X稱作untrusted X11 forwarding,連線時比較安全。

ssh -Y為trusted X11 forwarding,只有在部份程式無法開啟時才使用此選項。

5. Wayland的X11 Forwarding替代品
#

隨著Wayland成為主流的顯示協定,X11 Forwarding也逐漸走入歷史了…啊不過有開發者做了概念上類似的 WayPipe,能夠把遠端Wayland程式拉到本機Wayland執行。

參考資料
#

相關文章

用Linux備份與回復iPhone資料,idevicebackup指令使用方法
分類   Linux系統 Linux好用軟體
標籤   Linux IOS ITunes Libimobiledevice
ifuse:iPhone傳檔案到Linux電腦,實現iTunes檔案共享
分類   Linux系統 Linux好用軟體
標籤   Linux IOS ITunes Libimobiledevice
Linux如何開啟GNOME內建的RDP遠端桌面連線 (GNOME Remote Desktop)
分類   Linux系統 Linux好用軟體
標籤   Remote Desktop GNOME RDP

留言板

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

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

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。