通過 SSH 反向隧道的遠端桌面 (KDE)
我有一個通過中間人伺服器設置和工作的反向 ssh 隧道。我在這里和遠端機器上執行 Kubuntu 12.04。
我想打開一個遠端桌面會話。到目前為止,我一直在使用 Team Viewer 登錄遠端桌面。我想在沒有 Team Viewer 的情況下獲得類似的結果。我知道 X over SSH 將實現這一點。如果我需要vnc,那也沒關係。
這是我目前的問題。當我通過隧道連接到遠端機器時,出現此錯誤:
$ startkde & $ $DISPLAY is not set or cannot connect to the X server.
我正在使用 -Y SSH 選項連接並使用密鑰(不是密碼)。與 SSH 相關的一切似乎都執行良好。我看到的唯一問題是 X。這是另一個例子:
$ xeyes & $ Error: Can't open display:
和
$ echo $DISPLAY $
(不返回任何內容)
這些答案似乎很相關,但我無法足夠詳細地理解它們以在我的情況下制定解決方案:
如果您使用中間伺服器來互連兩個系統,那麼至少其中一條線路可能相當慢。在這種情況下,VNC 可能會為您提供更好的性能,因為您可以更好地調整頻寬/性能要求/質量比(這實際上對大多數設置都有效,除非您使用的是可靠的 100Mbit+ 網路)。
我個人喜歡
x11vnc
,它連接到正在執行的 X 伺服器並通過 VNC 協議轉發輸入/輸出(這可以在 X 伺服器執行時完成,因此您甚至可以與顯示管理器進行互動)。有問題的 X 伺服器既可以是正常伺服器(輸出到真實顯示器),也可以是基於幀緩衝區的伺服器,例如Xvfb
. 然後,您可以使用任何 VNC 客戶端連接到導出的 X 伺服器。當然,您可能希望通過ssh
或隧道傳輸傳輸stunnel
。的手冊頁x11vnc
非常詳盡,甚至在開頭還有一個常用的命令行範例。這還允許您遠端連接到正在執行的會話,以幫助某人遠端解決問題。作為一個重要的好處,由於只轉發輸入和輸出而不是 X 協議本身,因此網路斷開只會中斷會話,但所有程序仍然執行,這不是 X 通過 SSH 的情況。
如果出於某種原因您真的想通過 SSH 建立 X11 隧道,則必須確保
DISPLAY
環境變數由ssh
. 沒有它,您將無法繼續,因為應用程序將不知道要連接到哪個伺服器。檢查該X11Forwarding
指令是否yes
在您的sshd
配置中設置為。最後但並非最不重要的一點是,您可能不想
startkde4
通過 SSH 執行(或任何其他 X 會話) - 網路負載可能會非常重 - VNC 將再次為您提供更好的服務。