多次成功后无法通过 ssh 启动 xterm

Aer*_*ius 6 ssh xforwarding x11

我正在使用ssh. 这些脚本启动 5 个xterms,通过 ssh(使用-X选项)转发给我。目前我正在调试我的代码,所以我时不时地重新启动我的脚本。运行几次后一切正常,但在第 N 次(其中 N 是随机数)之后,我收到以下错误消息:

xterm Xt error: Can't open display: localhost:10.0
xterm Xt error: Can't open display: localhost:10.0
xterm Xt error: Can't open display: localhost:10.0
xterm Xt error: Can't open display: localhost:10.0
xterm Xt error: Can't open display: localhost:10.0
Run Code Online (Sandbox Code Playgroud)

在此之后,我可以继续使用 ssh,除了启动任何与 GUI 相关的东西,这意味着我不能再xterms远程启动。我唯一的解决方法是重新启动 ssh 连接。我可以以某种方式解决这个问题,再也不会被这个困扰吗?

系统

  • 本地系统:私有笔记本电脑,运行 Chakra Linux,KDE
  • 远程系统:大学计算机,运行 openSuSe、KDE

Gil*_*il' 10

在默认设置下,SSH 会在 20 分钟后阻止新的 X11 连接。为了避免这种情况,运行ssh -Y而不是ssh -X,或设置选项ForwardX11Trusted yes~/.ssh/config

如果您运行ssh -v,当新应用程序在超时后尝试连接到显示器时,您将看到消息“在 ForwardX11Timeout 过期后拒绝 X11 连接”。没有-v(这会导致很多其他调试输出),您获得的所有信息都是“无法打开显示”。


为了解释原因,我需要提供一些背景知识。X11 转发允许目标机器联系本地 X 服务器。这会在安全方面产生影响。X11 服务器不会将应用程序彼此隔离;这允许窗口管理器移动窗口并根据需要杀死它们,它允许宏处理工具也这样做并注入击键等等。此外,任何应用程序都可以读取和修改剪贴板。这通过本地数据为远程应用程序提供了很大的权力。如果远程机器不受信任,使用文本模式连接,可能发生的最坏情况是远程机器上的坏东西。但是使用不受约束的 X11 连接,坏事也可能发生在您的本地机器上。

X11 包含“ SECURITY 扩展”,它允许将某些应用程序声明为不受信任。不受信任的应用程序获得的权限较少,例如它们无法监视或注入其他应用程序中的击键。SSH给出了选项被信任声明连接(ForwardX11Trusted yesssh -Y)或不可信(ForwardX11Trusted nossh -X)。

SSH 长期以来一直默认建立不受信任的连接。作为额外的安全功能,不可信连接只能在 SSH 会话开始时建立几分钟;最初是 2 分钟(ssh.c1.202),然后是 20 分钟(ssh.c1.207)。作为一项安全功能,我不明白这一点:如果您已经在运行一个不受信任的应用程序,那么以后是否可以启动另一个应用程序是没有意义的。SSH(的最新版本ssh.c1.340clientloop.c1.221)发表了超时配置与ForwardX11Timeout

不幸的是,由于X.org 中的一个错误(目前尚未公开),您不能设置过大的 值ForwardX11Timeout,否则 X 服务器将崩溃

受信任的连接不受此过期机制的约束。权衡是远程计算机上的恶意软件或恶意管理员可以控制您的本地计算机。这通常是可以接受的,但由您决定。