啟用 ssh -X 或 ForwardX11 yes 時出現 X11 forwarding request failed on channel 0,通常因兩大原因:X11UseLocalhost yes 綁定回環介面導致部分 X Client 失效、或 SSH Server 禁用 IPv6 但 X11 嘗試 IPv6 連線。本文提供兩針對性修復方案。
# Client 端
ssh -X user@host # 或 -Y (Trusted)
# Server 端 /etc/ssh/sshd_config
X11Forwarding yes
# 重啟 sshd
systemctl restart sshd
原因:OpenSSH 預設 X11UseLocalhost yes,將 X11 socket 綁定在 127.0.0.1,DISPLAY 設為 localhost:10.0。某些 X Client (舊版、跨網段、容器) 無法連接回環介面。
# /etc/ssh/sshd_config
X11Forwarding yes
X11UseLocalhost no # 關鍵:綁定 0.0.0.0 (所有介面)
# 重啟
systemctl restart sshd
# 或針對性重啟
systemctl reload sshd
修改後 DISPLAY 變為 hostname:10.0,X Client 可經由實體 IP 連回 Server。
原因:Server 禁用 IPv6 (sysctl net.ipv6.conf.all.disable_ipv6=1),但 SSH X11 轉發嘗試建立 IPv6 socket 失敗。
# /etc/ssh/sshd_config
AddressFamily inet # 僅 IPv4 (inet6 為 IPv6, any 為雙棧)
# 重啟 sshd
systemctl restart sshd
注意:AddressFamily any (預設) 為雙棧;若 Server 確實無 IPv6,必須設 inet。
ssh -X user@host
echo $DISPLAY
# 應顯示 hostname:10.0 (方案一) 或 localhost:10.0 (方案二)
xclock & # 測試圖形視窗彈出
xeyes &
# ~/.ssh/config
Host *
ForwardX11 yes
ForwardX11Trusted yes # 相當於 -Y, 繞過 SECURITY extension 延遲
# 若仍失敗,嘗試指定 IP
# ForwardX11Timeout 0 # 無期限
setsebool -P ssh_forward_x11 1 (RHEL/CentOS)。依據環境套用方案一或二 (或兩者兼用),即可徹底解決 SSH X11 Forwarding 失敗問題。
Linux 使用 SSH 通過 FTP 協議傳送文件至遠程空間備份
Linux 命令列環境下 Git over HTTPS 認證設定完整指南:.netrc + GPG 加密 + credential helper 實戰
Linux tail 指令完全指南:即時追蹤日誌、倒序顯示、多檔案監控
Linux LVM 物理卷 (PV) 移除實戰:縮減邏輯卷、遷移資料、安全移除完整流程
Linux 誤刪 Oracle 數據文件?/proc 文件系統拯救數據實戰
Linux 環境變數 PATH 修改完全指南:臨時、永久、用戶級、系統級四種場景