Contents

XShell 7關掉圖形介面

小記

什麼是 X11 Forwarding?

X11(X Window System)是 Linux/Unix 系統的圖形顯示協定,允許應用程式透過網路將圖形界面渲染到遠端的 X Server 上。X11 Forwarding 則是 SSH 的一項功能,讓你在 Windows 透過 XShell 連線到 Linux 主機時,可以直接顯示 Linux 上的圖形應用程式視窗(例如 gedit、xeyes 等)。

在 XShell 7 中,X11 Forwarding 預設是勾選開啟的

為什麼要關閉 X11 Forwarding?

雖然 X11 Forwarding 提供了遠端圖形介面的便利,但在維運環境中通常建議關閉,原因如下:

  1. 程式執行錯誤:當 SSH 連線的程式內部嘗試使用圖形功能(例如產生條碼、生成 PDF 報表),如果啟用了 X11 Forwarding,程式會嘗試連接 X Server,若找不到可用的 Display,就會拋出例如 Cannot connect to X11 window server 的錯誤,導致程式中斷。

  2. 安全性風險:X11 Forwarding 存在安全漏洞,遠端主機上的惡意程式可透過 X11 連線讀取本地鍵盤輸入、截圖等,在不受信任的環境中有資安疑慮。

  3. 效能影響:即使沒有實際使用圖形功能,啟用 X11 Forwarding 也會增加 SSH 連線的額外開銷。

XShell 7 關閉 X11 Forwarding 步驟

  1. 開啟 XShell 7,在 Session Manager 選擇對應的連線設定
  2. 右鍵 → Properties(屬性)
  3. 進入 Connection(連線)→ SSH → Tunneling(通道)
  4. 找到 X11 Forwarding,取消勾選
  5. 按下 OK 儲存設定

https://i.imgur.com/KFXhD2x.png

若有勾選 X11 Forwarding,連線後執行帶圖形功能的程式時,XShell 會彈出錯誤提示:

https://i.imgur.com/gjO6aT8.png

程式也會出現類似以下的錯誤訊息:

https://i.imgur.com/PFr4bN4.png

在 SSH Config 中關閉 X11 Forwarding

如果是使用 OpenSSH 的 ~/.ssh/config 設定連線,可以加上以下設定來關閉 X11 Forwarding:

1
2
3
4
Host your-server
    HostName 192.168.1.100
    User username
    ForwardX11 no

或是直接在 SSH 指令加上 -x 參數:

1
ssh -x user@your-server

若要完全禁止,也可以在 Server 端的 /etc/ssh/sshd_config 設定:

1
X11Forwarding no

修改後記得重啟 SSH 服務:

1
sudo systemctl restart sshd

小結

在維運環境中,若不需要遠端圖形介面,建議將 X11 Forwarding 關閉,不僅可以避免程式因找不到 X Server 而報錯,也能提升安全性與連線效率。