概述
在 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 转发不工作
- 检查 SSH 配置
/etc/ssh/sshd_config:1 2
X11Forwarding yes X11DisplayOffset 10
-
确保登录脚本没有覆盖
DISPLAY变量 - 检查
~/.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 显示在本地桌面