在已建立的 SSH 连接上启用/禁用 X

Zac*_*ady 2 ssh x11

因此,在我的工作中,我从 CentOS 机器通过 SSH 连接到其他本地 CentOS 机器。我们使用在 X11 和终端中运行的应用程序。某些功能仅在终端中可用,而其他功能仅在 X11 中可用。该程序会自动检测是否有 X 显示器要连接,并在可用时使用它。能够在应用程序的两个版本之间快速切换而无需提出增强请求会很好。我们有大量没有-X-Y标志的桌面图标/快捷方式。有没有办法在没有-X-Y标志的情况下启动的正在运行的 SSH 会话上启用/禁用 X11 转发?

Ste*_*ris 7

如果您使用-X或运行,-Y这将$DISPLAY在远程端设置为指向 X 隧道。取消设置$DISPLAY将阻止 X 应用程序与 X 服务器通信。例如

$ echo $DISPLAY 
localhost:10.0

$ xdpyinfo | head -2
name of display:    localhost:10.0
version number:    11.0

$ DISPLAY= xdpyinfo | head -2
xdpyinfo:  unable to open display "".

$ DISPLAY= xterm
xterm: Xt error: Can't open display: 
xterm: DISPLAY is not set
Run Code Online (Sandbox Code Playgroud)

因此,启用 X 隧道后,您应该能够通过取消设置来“隐藏”它$DISPLAY

在 SSH 会话中,您可以键入~?以获取您可以进行的更改列表。您可以通过添加/删除端口转发,~C但您无法轻松更改 X 隧道,因为这需要运行xauth和类似的操作。事件的顺序是将远程端口转发回 localhost:6000(或本地 X 服务器所在的任何端口),设置 DISPLAY 并添加xauth权限 - 不是那么容易!