感谢@jensd和@unxnut帮助我。根据您的评论,我能够找出问题所在。
该解决方案需要两个步骤:
- DISPLAY变量应正确设置。
- 切换到远程服务器时,-X开关必须打开
我以前的尝试缺少这两个条件之一或全部。
无论如何,对于后来在这里看到此内容的用户来说,这些都是示例,向您展示我想说的话。
情况1
我的本地计算机将没有设置DISPLAY变量。然后,我将使用-X开关SSH到远程服务器,然后尝试执行xclock
。
Black@Black-PC ~
$ echo $DISPLAY
## the blank means that DISPLAY variable has not been specified##
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:23:13 2014 from
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep $DISPLAY
DISPLAY: Undefined variable.
如您所见Error: Can't open display:
,远程服务器终端显示错误。
案例2
这次,在本地计算机上,我将指定DISPLAY变量。但是,当我在ssh'ing时,我不会打开-X开关。结果将是失败的:
Black@Black-PC ~
$ export DISPLAY=:0.0
Black@Black-PC ~
$ echo $DISPLAY
:0.0
Black@Black-PC ~
$ ssh kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:33:32 2014 from
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep DISPLAY
[kwagjj@James5 ~]$
在开始时,您会看到我已经正确设置了DISPLAY变量。但是即使这样,在ssh'ing之后(没有-X开关),xclock也不会执行。
* setenv | grep DISPLAY
这里可以看到不同的结果(与案例1比较)。在case2中,结果只是空白。另一方面,此命令行中case1的结果是DISPLAY: undefined variable
...。我不确定是如何引起这种差异的,但是我直觉,它与您是否满足条件1或2有关。 。
案例3
这次,我将在本地计算机上正确指定DISPLAY变量,并在我的-X开关打开的情况下ssh到远程服务器。
Black@Black-PC ~
$ echo $DISPLAY
:0.0
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Tue Jun 24 22:37:27 2014 from
[kwagjj@James5 ~]$ xclock &
[1] 9174
[kwagjj@James5 ~]$ setenv | grep DISPLAY
DISPLAY=localhost:11.0
[kwagjj@James5 ~]$
在此设置下,xclock
可以工作!!这是一张截图,证明我没有说谎。
xclock已成功显示在我的本地计算机中。
再次检查setenv | grep DISPLAY
这种情况下的结果。现在显示DISPLAY=localhost:11.0
。据我所知,这与.Xauthority文件中的MIT-MAGIC-COOKIE有关,但由于对此我不太了解,因此我将不做进一步介绍。
结论:从以上三种情况中,我们可以确认,为了正确显示远程X Windows,-X
必须正确设置1.本机的DISPLAY变量和2. ssh 开关。当然,远程服务器应允许X11forwarding。