






















理解了原理之后,排障就变成了逐层排查:客户端 → SSH 连接 → 服务端 → 权限 → 特殊场景。
1. 本地 X Server 是否在运行?
远程的图形要显示在本地,本地得有一个 X Server 在运行。Linux 桌面用户通常不需要操心,但如果你在 Windows 上用 SSH 客户端,需要额外安装 X Server(如 VcXsrv)。
2. SSH 客户端是否开启了 X11 Forwarding?
使用 -X 参数连接后,检查 $DISPLAY 是否被设置。如果为空,说明 forwarding 没有建立成功。
如果用的是 SecureCRT 或 PuTTY 这类图形化 SSH 客户端,需要在会话设置里手动勾选 X11 Forwarding 选项。
3. 远程服务端:xauth 和 xterm 是否已安装?
xauth 是 X11 Forwarding 的必要组件,没有它 SSH 无法设置认证。 xterm 则是最好的测试工具。
which xauth which xterm apt install xauth xterm yum install xorg-x11-xauth xterm
4. sshd 配置是否正确?
远程服务器上的 /etc/ssh/sshd_config 需要启用 X11 forwarding:
grep X11Forwarding /etc/ssh/sshd_config grep AllowAgentForwarding /etc/ssh/sshd_config systemctl restart sshd
5. HOME目录和 .Xauthority 权限是否正常?
SSH 登录时需要在家目录下创建或更新 ~/.Xauthority 文件。如果家目录不可写,forwarding 会静默失败。
ls -la ~ | head -1 rm ~/.Xauthority chmod 700 ~/.ssh chmod 600 ~/.ssh/*
6. IPv6 被禁用导致的隐蔽问题
这是一个极其隐蔽的坑。如果你禁用了 IPv6,OpenSSH 在某些配置下会 静默拒绝 X11 forwarding——不报错,只是 $DISPLAY 为空。
sysctl net.ipv6.conf.all.disable_ipv6
解决方法是在 /etc/ssh/sshd_config 中强制使用 IPv4:
AddressFamily inet systemctl restart sshd
7. sudo 下运行图形程序
用 sudo 运行图形程序时报 X11 connection rejected because of wrong authentication ,是因为 root 用户的 ~/.Xauthority 中没有对应的认证 cookie。
cp ~/.Xauthority ~root/.Xauthority xterm sudo -u username xterm
方法二更干净——避免用 sudo su - ,因为它会清空环境变量导致 $DISPLAY 丢失。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。