來自遠端電腦的 X 隧道問題

來自遠端電腦的 X 隧道問題

我正在嘗試隧道 X 視窗。如果做:

user@local: ssh -X user@remote  xclock

有用。但是,如果我先登入機器然後啟動程序,它就會失敗。

user@local: ssh -X user@remote

user@remote: xclock
No protocol specified
Error: Can't open display: :0

什麼地方出錯?

編輯

我檢查了$DISPLAY遙控器上的變數:

user@local: ssh -X user@remote "echo $DISPLAY"
:0.0

登入後在遠端將其設定為相同的值不起作用。按照建議設定$DISPLAY即可。:10.0

user@local: ssh -X user@remote
user@remote: DISPLAY=:10.0 xclock

我仍然不明白為什麼互動式和非互動式會話需要不同的 $DISPLAY 值。

答案1

檢查變數展示正確設定為本地主機:10.0。如果不是,

export DISPLAY=localhost:10.0 

,然後嘗試時鐘再次。

但為什麼我需要「DISPLAY」為 10.0 而不是 0.0?

X伺服器(或者X視窗, 或者X11)正是這樣,一個伺服器,等待應用程式連接到它以顯示它們。這發生在您的電腦上,其中應用程式透過位於以下位置的套接字連接到 X 伺服器:/tmp,通常稱為/tmp/.X11-unix。然而,像所有伺服器一樣,X11可以從遠端電腦進行聯繫,並以圖形方式顯示在遠端電腦上執行的應用程式。

然而,這種能力帶來了許多安全風險,因此向遠端應用程式開放 X11 伺服器非常困難(您需要在不同的設定檔中至少指定相同的選項 3 次)。

現在輸入SSH,這反而使這個變得安全:它是-Y/-X的選項SSH它安全地處理(也透過加密流量)向遠端應用程式開啟本機 X11 伺服器的所有細節。然而,當你想顯示偏僻的如果您在本機使用 xclock,您必須指示遠端應用程式要聯絡的 X11 伺服器不是它自己的 X11 伺服器,而是遠端電腦上的伺服器(您啟動該伺服器的那台電腦)SSH會議)。所以時鐘必鬚髮送其輸出不是到本地套接字/tmp但到一個網路連接埠(它是127.0.0.1:6010, 哪個SSH仁慈地縮短為本地主機:10), 從中SSH將負責將其發送回您的本機電腦,最終以圖形方式顯示輸出。

如果您不喜歡將不同的 ssh 連線(您可能有多個)分開10單位,如本機:10.0,本機:20.0,...)你應該改變聲明

X11DisplayOffset 10

/etc/ssh/sshd_config無論你喜歡什麼(儘管說實話,我看不出有任何理由)。

正是這個語句導致遠端顯示可用不是在港口6000(這將是本機:0.0),但在連接埠上6010。你可以自己檢查一下:

$ ssh -Y vps
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Apr 17 02:47:42 2017 from 
root@vps:~# ss -lntp | grep 6010
LISTEN     0      0                 127.0.0.1:6010                     *:*      users:(("sshd",16172,8))
LISTEN     0      0                       ::1:6010                    :::*      users:(("sshd",16172,7))

相關內容