我已经登录到远程服务器并尝试显示 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 帮助我。根据您的评论,我能够找出问题所在。
该解决方案需要两个步骤:
- 应正确设置 DISPLAY 变量。
- 当 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 xorg
Firefox 开始运行后。