从Linux到Mac的SSH转发的X11显示在一段时间后丢失


10

从Mac(10.7.2)登录到Linux(Ubuntu 8.04)时,ssh转发我的X11连接时遇到了一个新的令人烦恼的问题。使用ssh -X登录到远程计算机并从该Shell启动基于X11的应用程序时,我没有问题。

最近开始发生的事情是,由于转发的显示被阻止(我认为),经过一段时间(约数小时),无法从同一shell额外调用X11应用程序。例如,当尝试启动xterm时,我收到有关DISPLAY设置错误的常见消息,例如:

xterm Xt错误:无法打开显示:localhost:10.0

但是,我在登录时立即启动的X11应用程序仍然运行良好,并使用了完全相同的显示(localhost:10.0),只是它早先启动了。

我打开了sshd_config中的详细日志记录,并在/var/log/auth.log文件中看到此消息,以响应失败的xterm启动尝试:

sshd [22104]:通道8:打开失败:在管理上被禁止:打开失败

如果我再次将-X SSH到服务器,启动新的外壳并分配新的显示(localhost:11.0),则重复相同的过程:只要我保持打开状态(天, ),但几个小时后,我无法从该shell启动任何新的。

细节:在Ubuntu 8.04上运行的OpenSSH sshd服务器,显示已转发到运行带有默认Apple X服务器的Lion(10.7.2)的Mac。这些系统通过以太网LAN连接,并且它们之间只有一个开关。两台计算机均未运行防火墙。直到最近(几天前),该设置仍然可以正常工作,因此我对下一步的定位感到困惑。我绝不是X11或SSH专家,但具有良好的UNIX / Linux经验。尽管我尝试更改一些选项来进行调试,但客户端或服务器配置都没有明显变化,例如将sshd_config的TCPKeepAlive设置为no,并设置“ host + localhost”(您可以知道我一直在使用Google搜索)。

当从Linux 11.10便携式计算机通过同一网络登录到同一远程主机并进行切换时,不会发生此问题-可以在数小时后从同一ssh登录外壳成功调用xterm,而从Mac进行的同一实验失败(确保今天上午进行了测试),因此这似乎是Mac特有的问题。

由于在远程计算机(sshd服务器)上设置了“ LogLevel DEBUG3”,并且我没有对客户端连接进行任何更改,因此/var/log/auth.log会在一夜之间显示连接状态报告中的一个细微变化,这是使用的端口号通过来自Linux机器的一个成功的ssh会话(我认为),下面的连接#7:

sshd [20173]:debug3:通道7:状态:下列连接已打开:\ r \ n#0服务器会话(t4 r0 i0 / 0 o0 / 0 fd 14/13 cfd -1)\ r \ n#3从127.0.0.1端口57564(t4 r1 i0 / 0 o0 / 0 fd 16/16 cfd -1)的X11连接\ r \ n#4从127.0.0.1端口57565(t4 r2 i0 / 0 o0 / 0 fd 17的X11连接/ 17 cfd -1)\ r \ n#5 X12从127.0.0.1端口连接57566(t4 r3 i0 / 0 o0 / 0 fd 18/18 cfd -1)\ r \ n#6从127.0.0.1端口进行X11连接57567(t4 r4 i0 / 0 o0 / 0 fd 19/19 cfd -1)\ r \ n#7 X11从127.0.0.1端口59007连接

在此报告中,状态报告之间的所有内容都是相同的,只是连接#7使用的端口号(我相信这是Linux客户端),这是唯一仍保持显示连接的端口。从一连串的这些报告来看,它随着时间的推移持续增加。

谢谢你的帮助,

-麦克风


我遇到了同样的问题。
2012年

我在ssh命令上打开-vvv以从Mac的客户端ssh会话获取调试信息。我得到了这一点: codeForwardX11Timeout过期后拒绝X11连接ForwardX11Timeout是Mac ssh客户端中的一个选项,用于限制从不受信任的连接进行转发。可能使用-Y而不是-X将起作用。Lion的ssh手册页中没有记录ForwardX11Timeout。默认值是20分钟。可以在ssh_config中将其设置为更高,但是如果将Lion's X Server设置为> 596小时,则会崩溃……这会以毫秒为单位,溢出31位。啊 希望可以解决它。
mklein9 2012年

Answers:


13

在我将Mac客户端的/ etc / ssh_config更改为包含以下行之后,ssh会话开始了:

ForwardX11超时596h

都很好,整天都在工作。到现在为止,他们所有人都将拒绝启动新的xterm。因此,我相信这是答案,而且很幸运,这是一个简单的解决方案,但是超时仍然会在从现在开始的3-1 / 2周内发生。


3

man ssh_config

转发X11

如果将此选项设置为“是”,则远程X11客户端将拥有对原始X11显示的完全访问权限。如果将此选项设置为“ no”,则远程X11客户端将被视为不受信任,并防止窃取或篡改属于受信任X11客户端的数据。此外,用于会话的xauth(1)令牌将设置为20分钟后过期。这段时间之后,远程客户端将被拒绝访问。默认值为“ no”。有关对不受信任的客户端施加的限制的完整详细信息,请参阅X11 SECURITY扩展规范。


1
如果您扩展了为什么认为此配置选项可以解决原始问题的信息,可能会有所帮助。
pjmorse 2012年

这不解释为什么这个问题会发生,但一些推理将是有益的。
Stefan Lasiewski,2015年

1

要添加到“ 12年7月7日,0:11回答,mklein9 28129”,“ ssh会话是在我将Mac客户端的/ etc / ssh_config更改为包含以下行后开始的:

ForwardX11Timeout 596h

...但是从现在起超时仍会发生3-1 / 2周。”

显然,您可以使用0并将超时设置为无穷大(只要连接处于打开状态)。

ForwardX11Timeout 0

...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.