开启 X11 转发
X11 转发可以让你在远端 Linux 服务器运行图形应用,并把窗口显示到本机桌面。例如,在 Termark 的远端终端执行 xclock,时钟窗口会出现在你的电脑上。
需要准备三部分:本机 X Server、远端支持 X11 转发的 SSH 服务、Termark 中的 X11 开关。图形窗口由本机 X Server 显示,不会嵌入 Termark 的终端标签页。远端不需要安装完整桌面环境。
1. 在本机安装并启动 X Server
以下步骤在运行 Termark 的电脑上操作,根据本机系统选择一节。
macOS:安装 XQuartz
- 官方网站及下载入口:https://www.xquartz.org/
- 官方常见问题:https://www.xquartz.org/FAQs.html
- 打开官网,下载适用于当前 macOS 的安装包。
- 打开下载的磁盘映像,运行其中的安装程序,按提示安装。
- 首次安装后注销 macOS 并重新登录,让桌面环境加载 XQuartz 的显示配置。
- 从“应用程序 → 实用工具”启动 XQuartz。
- 在 XQuartz 的设置中保持连接认证开启(Authenticate connections)。使用本机 socket 转发不需要开启“允许网络客户端连接”。
如果已安装 Homebrew,也可以在本机终端执行:
brew install --cask xquartz随后仍需完成重新登录和启动 XQuartz 的步骤。
Termark 中的三个 X11 配置项通常可以留空。macOS 默认使用 /opt/X11/bin/xauth 读取认证信息,并自动查找本机显示地址。
XQuartz 的显示地址通常类似:
/private/tmp/com.apple.launchd.XXXXXX/org.xquartz:0不要将它强行改为 localhost:0。如果自动检测失败,可以在本机终端运行:
launchctl getenv DISPLAY把实际输出填写到 Termark 的“本机显示地址”。如果没有输出,先确认 XQuartz 已安装并启动,且安装后已经重新登录系统。
Windows:安装并启动 VcXsrv
下载安装包并完成安装,然后运行 XLaunch:
- Display settings 选择 Multiple windows,显示编号保持
0。 - Client startup 选择 Start no client。
- Extra settings 勾选 Disable access control。
- 完成向导并保持 VcXsrv 运行。
Termark 在 Windows 上默认连接 127.0.0.1:0,不读取 xauth 或 Xauthority 配置,因此通常无需填写任何内容。若 VcXsrv 使用其他显示编号,可以展开 Termark 的“高级设置”,把“本机显示地址”改为对应地址,例如显示编号 1 使用 127.0.0.1:1。
只需让本机 Termark 连接 VcXsrv,无需让远端服务器直接访问 Windows 的 6000 端口,也不要为此开放公网入站端口。Termark 不会自动修改 VcXsrv 的访问控制;无认证模式会允许能连接该 X Server 的本机程序访问显示,因此 Windows 防火墙的网络访问范围应限制在实际需要的网络,不要开放公用网络访问。
Linux:使用 Xorg 或 XWayland
- X.Org 项目网站:https://www.x.org/
- Wayland / XWayland 项目网站:https://wayland.freedesktop.org/
多数 Linux 桌面已经提供 Xorg 或 XWayland,建议通过发行版的软件仓库安装缺少的组件,而不是下载源码编译。
在本机桌面的终端检查:
echo "$DISPLAY"
command -v xauth如果 DISPLAY 有输出,例如 :0 或 :1,通常已有可用的 X 显示。缺少 xauth 时,按发行版安装:
# Ubuntu / Debian
sudo apt-get update
sudo apt-get install -y xauth
# Fedora
sudo dnf install -y xorg-x11-xauth如果使用 Wayland 桌面且没有 XWayland,可安装:
# Ubuntu / Debian
sudo apt-get install -y xwayland
# Fedora
sudo dnf install -y xorg-x11-server-Xwayland安装后重新登录桌面,由桌面会话管理 XWayland。Termark 中的配置通常可留空,自动读取 DISPLAY,并由 xauth 使用 XAUTHORITY 或默认认证文件。不要假设认证文件一定是 ~/.Xauthority。
如果本机没有图形桌面,仅安装 xauth 不会创建 X Server。XWayland 也需要可用的 Wayland 桌面环境。此功能转发的是 X11 应用,不支持原生 Wayland 协议转发。
2. 在 Termark 检测本机配置
打开 设置 → 通用 → X11 转发:
- 先按当前系统的提示启动 X Server。默认配置通常即可,无需展开“高级设置”。
- 只有自动检测失败或使用了非默认显示地址时,才展开“高级设置”修改配置。Windows 只显示“本机显示地址”;macOS / Linux 还可以设置 xauth 路径和 Xauthority 文件。
- 输入框修改后,离开输入框会自动保存,不需要点击保存按钮。
- 点击 检测本机 X Server。
- 出现检测通过并显示本机 display 地址后,继续配置远端。
这个按钮只验证本机 X Server 和认证,不代表远端已允许 X11 转发。配置项只保存在当前电脑,不随资产云同步到其他设备。
3. 配置远端 SSH 服务器
以下命令在远端 Linux 服务器执行。
安装 xauth 和测试应用
Ubuntu / Debian:
sudo apt-get update
sudo apt-get install -y xauth x11-apps其中 xauth 用于 SSH 的 X11 授权,x11-apps 提供 xclock、xeyes 等测试程序。其他发行版通过软件仓库安装对应的 xauth 和测试应用包即可。
允许 X11 转发
查看 sshd 的有效配置:
sudo sshd -T | grep -E 'x11forwarding|x11uselocalhost'应包含:
x11forwarding yes
x11uselocalhost yes若未开启,在 /etc/ssh/sshd_config 或系统实际使用的配置文件中设置:
X11Forwarding yes
X11UseLocalhost yes修改后先检查语法,再重新加载服务:
sudo sshd -t
# Ubuntu / Debian:语法检查通过后执行
sudo systemctl reload ssh
# Fedora / RHEL 系:服务通常叫 sshd
# sudo systemctl reload sshdMatch 规则、DisableForwarding、SSH 证书和 authorized_keys 中的限制也可能禁止 X11。若全局配置已开启但仍被拒绝,需要检查当前用户的实际限制。
4. 开启转发并验证
- 编辑 Termark 中的 SSH 主机,在高级设置中勾选 启用 X11 转发,保存主机。
- 断开旧连接并重新连接。临时 SSH 连接也可以在连接对话框中勾选该选项。
- 在远端终端执行:
echo "$DISPLAY"
xclockDISPLAY 通常类似 localhost:10.0,由远端 sshd 自动分配,实际编号可能不同。本机桌面出现时钟窗口,就说明 X11 转发工作正常。 关闭窗口或在终端按 Ctrl+C 结束测试。
不要在远端手动设置 DISPLAY=localhost:0,也不要把本机 XQuartz 的显示路径复制到远端。远端的显示地址与本机显示地址用途不同。
连接行为与权限
- X11 开关默认关闭;关闭时不检测本机 X Server,也不申请转发。
- 开启后,本机 X Server 未启动、认证不可用或远端拒绝转发时,SSH 仍正常连接,终端会用告警色说明 X11 未启用的原因。
- 不会因 X11 失败重复建立 SSH 连接或重新认证。启动本机 X Server、修正配置后,需要重新连接以再次申请转发。
- 当前使用可信转发模式,权限语义类似
ssh -Y。获得授权的远端图形程序可以访问本机 X 显示,请仅对可信主机启用。 - 支持本地 SSH 资产及临时 SSH 连接。受限 Shell 不申请 X11 转发。
常见问题
| 现象 | 处理方法 |
|---|---|
| 本机检测提示显示地址或 xauth 不可用 | 确认本机 X Server 已安装;macOS / Linux 检查 display、xauth 路径和认证文件;macOS 首次安装后重新登录 |
| 本机检测提示连接失败或拒绝认证 | 启动 XQuartz / VcXsrv;Windows 确认 VcXsrv 已勾选 Disable access control,且显示编号与 Termark 中的地址一致 |
| 终端提示远端拒绝 X11 转发 | 检查 sshd 的有效配置、用户限制和远端 xauth |
| SSH 可以连接,但没有图形窗口 | 查看终端是否有 X11 告警;先完成本机检测,再重新建立连接 |
远端 DISPLAY 为空 | 确认该连接开启了 X11 并重新连接;检查 shell 启动脚本是否清除了 DISPLAY |
xclock: command not found | 在远端安装测试程序;Ubuntu / Debian 使用 x11-apps |
Can't open display | 检查本机 X Server 是否仍在运行,远端 DISPLAY 是否被覆盖;先用当前 SSH 用户运行测试,避免直接切换用户造成认证变化 |