概述

在 X11(X Window 系统)中,X 启用的客户端应用程序可以在一台主机上运行,而其 GUI 显示在另一台主机上。

传统方法的问题

传统方法使用 X 服务器提供的基于主机的访问控制,通过 telnet 或 rsh 连接到远程机器并设置 DISPLAY 环境变量,但这种方法不安全

推荐方法

LSF 集群通常仅允许 SSH 访问,禁用 telnet 和 rsh。对于 X 启用的应用程序,X 连接必须通过 SSH 隧道传输,这是安全的方法。

前提条件

条件 说明
SSH 安装 所有 LSF 主机(提交和执行主机)都已安装 ssh
X11 转发 客户端桌面启用 SSH X11 转发连接到 LSF 主机
X Server 本地桌面主机安装了 X Server
配置正确 本地桌面和 LSF 提交主机都正确配置了 SSH X11 转发
无 DISPLAY 覆盖 用户的 $HOME/.cshrc$HOME/.profile 和作业脚本不要尝试设置 DISPLAY 环境变量

验证 SSH X11 转发

在 LSF 之外验证 X11 转发是否正常工作:

1
2
3
# 从显示主机使用 ssh -X 登录到提交主机
# 然后启动 X 应用程序到集群中任何执行主机
# 应该能看到 X 应用程序显示在显示主机上

配置步骤

步骤一:连接公司网络(如需要)

连接到公司网络。

步骤二:启动 X 显示服务器

确保本地机器上的 X 显示服务器正在运行。

步骤三:设置 DISPLAY 环境变量

1
export DISPLAY=:0.0

或使用本地 IP 地址:

1
export DISPLAY=local_ip_address:0.0

步骤四:使用 SSH 连接到集群

1
ssh -Y username@remote_hostname_or_ip_address

出现提示时输入密码。

说明:SSH 服务器会自动设置 DISPLAY 环境变量,通常为 localhost:10.0。客户端连接到远程主机上的代理 X11 显示,X11 协议通过 SSH 转发到您的 X 服务器。

警告:如果登录脚本将 DISPLAY 更改为其他值,会破坏 X11 转发!

步骤五:设置 LSF 环境

csh 或 tcsh

1
source $LSF_ENVDIR/cshrc.lsf

sh、ksh 或 bash

1
. $LSF_ENVDIR/profile.lsf

步骤六:使用 SSH X11 转发提交作业

1
bsub -XF myXapp

可能会提示输入 SSH 密码。提交作业并输入密码后,X 应用程序的 GUI 将显示在本地显示器上。

bsub -XF 选项

选项 说明
-XF 启用 SSH X11 转发,将 X11 显示从执行主机转发回提交主机

常见问题

X11 转发不工作

  1. 检查 SSH 配置 /etc/ssh/sshd_config
    1
    2
    
    X11Forwarding yes
    X11DisplayOffset 10
    
  2. 确保登录脚本没有覆盖 DISPLAY 变量

  3. 检查 ~/.Xauthority 文件权限

显示错误

确保本地 X Server 正在运行且 DISPLAY 设置正确。

工作流程图

1
2
3
4
5
6
7
8
9
10
11
本地桌面 (X Server)
       ↓
    SSH -Y
       ↓
LSF 提交主机 (DISPLAY=localhost:10.0)
       ↓
   bsub -XF
       ↓
LSF 执行主机 (X11 协议通过 SSH 隧道)
       ↓
   X 应用程序 GUI 显示在本地桌面

参考资料

  1. IBM Documentation - Using ssh X11 forwarding with LSF
  2. IBM Documentation - Best practices and tips for LSF