情況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”,它會起作用嗎?

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開關都必須正確設定。當然,遠端伺服器應該允許X11轉發。

答案4

我在基於 debian 的系統(proxmox)上遇到了類似的問題,問題是由於未安裝 xorg 造成的。apt-get install xorgFirefox 開始運作後。

相關內容