使用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