
我已經登入遠端伺服器並嘗試顯示 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 幫助我。根據您的評論,我能夠找出問題所在。
此解決方案需要兩個步驟:
- 應正確設定 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
開關都必須正確設定。當然,遠端伺服器應該允許X11轉發。
答案4
我在基於 debian 的系統(proxmox)上遇到了類似的問題,問題是由於未安裝 xorg 造成的。apt-get install xorg
Firefox 開始運作後。