从Mac(10.7.2)到Linux(Ubuntu 8.04)login时,使用ssh转发X11连接时遇到了一个令人烦恼的新问题。 使用ssh -Xlogin到远程计算机并从该shell启动基于X11的应用程序时,我没有任何问题。
最近开始发生的事情是,由于转发的显示被阻止(我推测),在一段时间之后(大约几小时),来自同一个shell的X11应用程序的额外调用无法启动。 例如,当试图启动xterm时,我得到了有关DISPLAY设置不正常的消息,例如:
xterm Xt错误:无法打开显示:localhost:10.0
但是,我login后开始的X11应用程序仍然运行良好,使用完全相同的显示器(本地主机:10.0),只是它启动较早。
我打开了sshd_config中的详细日志logging,并在/var/log/auth.log文件中看到这个消息,以响应失败的xterm启动尝试:
sshd [22104]:频道8:打开失败:pipe理禁止:打开失败
如果我再次向服务器ssh -X,启动一个新的shell并分配一个新的显示(localhost:11.0),同样的过程会重复:只要我保持打开状态, ),但几个小时后,我无法从该shell启动任何新的。
详细信息:在Ubuntu 8.04上运行的OpenSSH sshd服务器,使用默认的Apple X服务器显示转发到运行Lion(10.7.2)的Mac。 系统通过一个以太网局域网连接在一个单一的交换机之间。 这两台机器都没有运行防火墙。 直到最近(前几天)这个设置完美的工作,所以我很困惑,看看下一步。 我绝不是X11或SSH专家,但具有良好的UNIX / Linux经验。 在客户端或服务器configuration中没有任何明显的改变,尽pipe我已经尝试改变一些选项来尝试debugging,比如将sshd_config的TCPKeepAlive设置为no,并设置“host + localhost”(你可以告诉我一直在使用谷歌search)。
从Linux 11.10笔记本电脑通过同一networking和交换机login同一个远程主机时,不会出现这个问题 – 几小时后xterm可以在相同的sshloginshell中成功调用,而Mac中的相同实验失败今天早上testing确定),所以它似乎是一个Mac特定的问题。
在远程计算机(sshd服务器)上设置“LogLevel DEBUG3”,并且客户端连接没有发生任何变化,/var/log/auth.log显示连接状态报告过夜的一个轻微变化,即使用的端口号由Linux机器上的一个成功的SSH会话(我认为),下面的连接#7:
sshd [20173]:debug3:channel 7:status:打开以下连接:\ r \ n#0 server-session(t4 r0 i0 / 0 o0 / 0 fd 14/13 cfd -1)\ r \ n#3来自127.0.0.1端口的X11连接57564(t4 r1 i0 / 0 o0 / 0 fd 16/16 cfd -1)\ r \ n#4来自127.0.0.1端口的X11连接57565(t4 r2 i0 / 0 o0 / 0 fd 17 / 17 cfd -1)\ r \ n#5来自127.0.0.1端口的X11连接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来自127.0.0.1端口的X11连接59007
在这个报告中,除了连接#7使用的端口号(我相信它是Linux客户端)之外,状态报告中的所有内容都是一样的 – 唯一一个仍然保持显示连接。 它随着时间的推移而不断增加,一夜之间通过这些报告进行判断。
感谢您的帮助,
-麦克风
在更改Mac客户端的/ etc / ssh_config以包含该行后,ssh会话启动:
转发X11超时596h
都工作正常,整天都在。 现在他们都会拒绝启动新的xterm。 所以我相信这是答案,幸运的是一个简单的解决scheme,但是暂停将在现在3-1 / 2周后发生。
man ssh_config
ForwardX11Trusted
如果此选项设置为“是”,则远程X11客户端将可以完全访问原始X11显示器。 如果此选项设置为“否”,则远程X11客户端将被视为不可信,并防止窃取或篡改属于受信X11客户端的数据。 此外,用于会话的xauth(1)令牌将被设置为在20分钟后过期。 在这段时间之后,远程客户端将被拒绝访问。 缺省值为“否”请参阅X11 SECURITY扩展规范,了解对不受信任的客户端施加的限制的完整详细信息。