试图通过SSH工作得到X11:连接被服务器拒绝

使用Cygwin / X11
在本地Xterm for SSH中启动命令:

xterm -e ssh -Y -v -l MyUser myserver.mydomain.com&

login后,我跑了

setenv DISPLAY myclient.mydomain.com:0.0

当我尝试启动Xterm时,我得到:

Xlib:连接到“myclient.mydomain.com:0.0”被服务器拒绝
Xlib:没有指定协议

xterm Xt错误:无法打开显示:myclient.mydomain.com:0.0

在另一台服务器上,我没有任何问题启动新的xterm窗口,而无需运行setenv。
该服务器上的“echo $ DISPLAY”返回“localhost:11.0”

如果我尝试在另一台服务器上使用它,我得到以下内容:

$ setenv DISPLAY localhost:11.0
$ xterm
xterm Xt错误:无法打开显示:localhost:11.0

我想我错过了一些非常基本的东西,但我不确定它是什么。


编辑:
试过不设置$ DISPLAY:

结果如下

$ echo $ DISPLAY
显示:未定义的variables。
$ xlogo
错误:无法打开显示:

还是行不通 :-(


再次编辑:上面是直接login。 在尝试运行xlogo之前,我没有删除$ DISPLAY或者改变它

不要将显示器设置在远端。 通过在SSH上使用-Y参数,它将在(远程)本地端build立一个侦听器,并将其传送回本地端。

你应该可以做到这一点:

local$ ssh -Y user@remote remote$ xlogo 

…和xlogo会popup。

编辑:这假定显示器在本地系统上设置,即:

 local$ xlogo 

…应该在执行ssh之前工作,因为ssh只是将前进插回到原始会话认为是正确的显示。 这很有用,因为您可以通过多个ssh会话进行显示:

 local$ ssh remote remote$ ssh further further$ xlogo 

…应该pipe用。

你必须使用X11 R5。 使用该版本,您的X11窗口必须在服务器上运行。 然后发出以下命令 –

 printenv | grep 'X11' printenv | grep 'ssh' 

如果你发现X11窗口正在运行,那么 –

 xterm -e 'ssh remote.machine.domain xhost + remote.machine.domain setenv DISPLAY local.machine.domain:0.0 xterm & 

当你发出上述命令时,如果xtermpopup一个GUI,那么你的X11环境被configuration为使用ssh运行。 如果没有,请检查X11安装的最新版本。

如果这不起作用,请给我一个笔记。 我会看看日志。 好!。

man ssh

 -X Enables X11 forwarding. This can also be specified on a per-host basis in a configuration file. 

David差不多已经钉上了一半的等式–ssh机制会自动设置xauth身份validation并定义您的显示,所以不要通过手动设置DISPLAYvariables来手动覆盖它。

另一个问题是,一些事情的目标端的SSH守护进程被configuration为拒绝X转发,即使你礼貌地问。

ssh -v会告诉你服务器是否拒绝X转发; 你也可以看一下sshd_config来查看是否不允许X转发。

login后你应该做一个

 echo $DISPLAY 

可能你会得到像“localhost:11.0”的东西。 这意味着ssh将自动转发到本地主机显示器11的任何连接到笔记本电脑上的X11服务器。 所以,开始你的程序。

当你修改DISPLAY时,你告诉程序直接连接到你的笔记本电脑(没有encryption)。 为了工作,你应该允许它在你的笔记本电脑上(做一些像“xhost + myclient.mydomain.com”)。

另外,当你做“ssh -Y”的时候,服务器上的X服务器应该监听TCP端口6000 + n,其中n是分配给你的信任连接的显示号码。 你可以通过做检查:

 netstat -l -t 

然后检查端口6000之后是否有任何东西打开(例如6011)。 如果由于某种原因,DISPLAY设置错误(可能是您的同事机器),那么请尝试:

 setenv DISPLAY localhost:11.0