跳转到内容

开启 X11 转发 ​

X11 转发可以让你在远端 Linux 服务器运行图形应用,并把窗口显示到本机桌面。例如,在 Termark 的远端终端执行 xclock,时钟窗口会出现在你的电脑上。

需要准备三部分:本机 X Server、远端支持 X11 转发的 SSH 服务、Termark 中的 X11 开关。图形窗口由本机 X Server 显示,不会嵌入 Termark 的终端标签页。远端不需要安装完整桌面环境。

1. 在本机安装并启动 X Server ​

以下步骤在运行 Termark 的电脑上操作,根据本机系统选择一节。

macOS:安装 XQuartz ​

  1. 打开官网,下载适用于当前 macOS 的安装包。
  2. 打开下载的磁盘映像,运行其中的安装程序,按提示安装。
  3. 首次安装后注销 macOS 并重新登录,让桌面环境加载 XQuartz 的显示配置。
  4. 从“应用程序 → 实用工具”启动 XQuartz。
  5. 在 XQuartz 的设置中保持连接认证开启(Authenticate connections)。使用本机 socket 转发不需要开启“允许网络客户端连接”。

如果已安装 Homebrew,也可以在本机终端执行:

bash
brew install --cask xquartz

随后仍需完成重新登录和启动 XQuartz 的步骤。

Termark 中的三个 X11 配置项通常可以留空。macOS 默认使用 /opt/X11/bin/xauth 读取认证信息,并自动查找本机显示地址。

XQuartz 的显示地址通常类似:

text
/private/tmp/com.apple.launchd.XXXXXX/org.xquartz:0

不要将它强行改为 localhost:0。如果自动检测失败,可以在本机终端运行:

bash
launchctl getenv DISPLAY

把实际输出填写到 Termark 的“本机显示地址”。如果没有输出,先确认 XQuartz 已安装并启动,且安装后已经重新登录系统。

Windows:安装并启动 VcXsrv ​

下载安装包并完成安装,然后运行 XLaunch:

  1. Display settings 选择 Multiple windows,显示编号保持 0。
  2. Client startup 选择 Start no client。
  3. Extra settings 勾选 Disable access control。
  4. 完成向导并保持 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 ​

多数 Linux 桌面已经提供 Xorg 或 XWayland,建议通过发行版的软件仓库安装缺少的组件,而不是下载源码编译。

在本机桌面的终端检查:

bash
echo "$DISPLAY"
command -v xauth

如果 DISPLAY 有输出,例如 :0 或 :1,通常已有可用的 X 显示。缺少 xauth 时,按发行版安装:

bash
# Ubuntu / Debian
sudo apt-get update
sudo apt-get install -y xauth

# Fedora
sudo dnf install -y xorg-x11-xauth

如果使用 Wayland 桌面且没有 XWayland,可安装:

bash
# 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 转发:

  1. 先按当前系统的提示启动 X Server。默认配置通常即可,无需展开“高级设置”。
  2. 只有自动检测失败或使用了非默认显示地址时,才展开“高级设置”修改配置。Windows 只显示“本机显示地址”;macOS / Linux 还可以设置 xauth 路径和 Xauthority 文件。
  3. 输入框修改后,离开输入框会自动保存,不需要点击保存按钮。
  4. 点击 检测本机 X Server。
  5. 出现检测通过并显示本机 display 地址后,继续配置远端。

这个按钮只验证本机 X Server 和认证,不代表远端已允许 X11 转发。配置项只保存在当前电脑,不随资产云同步到其他设备。

3. 配置远端 SSH 服务器 ​

以下命令在远端 Linux 服务器执行。

安装 xauth 和测试应用 ​

Ubuntu / Debian:

bash
sudo apt-get update
sudo apt-get install -y xauth x11-apps

其中 xauth 用于 SSH 的 X11 授权,x11-apps 提供 xclock、xeyes 等测试程序。其他发行版通过软件仓库安装对应的 xauth 和测试应用包即可。

允许 X11 转发 ​

查看 sshd 的有效配置:

bash
sudo sshd -T | grep -E 'x11forwarding|x11uselocalhost'

应包含:

text
x11forwarding yes
x11uselocalhost yes

若未开启,在 /etc/ssh/sshd_config 或系统实际使用的配置文件中设置:

text
X11Forwarding yes
X11UseLocalhost yes

修改后先检查语法,再重新加载服务:

bash
sudo sshd -t

# Ubuntu / Debian:语法检查通过后执行
sudo systemctl reload ssh

# Fedora / RHEL 系:服务通常叫 sshd
# sudo systemctl reload sshd

Match 规则、DisableForwarding、SSH 证书和 authorized_keys 中的限制也可能禁止 X11。若全局配置已开启但仍被拒绝,需要检查当前用户的实际限制。

4. 开启转发并验证 ​

  1. 编辑 Termark 中的 SSH 主机,在高级设置中勾选 启用 X11 转发,保存主机。
  2. 断开旧连接并重新连接。临时 SSH 连接也可以在连接对话框中勾选该选项。
  3. 在远端终端执行:
bash
echo "$DISPLAY"
xclock

DISPLAY 通常类似 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 用户运行测试,避免直接切换用户造成认证变化

相关页面 ​

Termark · SSH 客户端与终端工作台