情况1

情况1

我已经登录到远程服务器并尝试显示 x 应用程序(例如 firefox)。但出现错误消息。以下是我打开 Firefox 的尝试

Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ exit
logout
Connection to 143.248.146.204 closed.

Black@Black-PC ~
$ ssh -Y kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ 

我使用 -X、-Y 是因为我在某处读到这两个选项与 X11 的凭据相关,并且这些开关将为我完成这项工作。即使没有 -X、-Y 开关,我的尝试也失败了。

“未指定显示”错误是什么意思?

PS 奇怪的是,如果我通过 PUTTY 连接到远程服务器并重复命令“firefox”,它会起作用吗?!?!(firefox 显示在本地计算机上)

PS我的本地计算机是Windows 7,所以我在后台运行Xming以允许X11显示。至于上面写的尝试,命令是在Cygwin终端输入的。

答案1

我刚刚在连接到无头 RHEL7 服务器时遇到了这个问题。

您需要在主机上安装 xorg-x11-xauth 软件包才能设置 DISPLAY 变量并获得正确授权。

希望我救了某人一些时间。

答案2

确保您的 cygwin 环境中设置了 DISPLAY 变量:

export DISPLAY=:0.0

使用 SSH 连接后,检查该 shell 是否也知道正确的 DISPLAY 变量:

echo $DISPLAY

答案3

感谢@jensd、@unxnut 帮助我。根据您的评论,我能够找出问题所在。

该解决方案需要两个步骤:

  1. 应正确设置 DISPLAY 变量。
  2. 当 ssh'ing 到远程服务器时,-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正常显示,1.本机的DISPLAY变量和2.ssh-X开关都必须正确设置。当然,远程服务器应该允许X11forwarding。

答案4

我在基于 debian 的系统(proxmox)上遇到了类似的问题,问题是由于未安装 xorg 造成的。apt-get install xorgFirefox 开始运行后。

相关内容