Linux

伺服器上沒有 SSH 的反向 X11 轉發

  • June 12, 2015

我想在 SERVER 上執行 X11 程序並在 CLIENT 上顯示視窗。

我在伺服器上有一個外殼開始。(這不是 SSH shell,而是一些集群計算軟體)程序必須以某種方式從這個 shell 啟動。

我擁有對客戶端的 SSH 訪問權限和直接訪問權限,但是我無法從客戶端通過 SSH 連接到伺服器。

我想在伺服器上執行程序並在客戶端上打開視窗。我該怎麼做?

反向隧道法

您可以從 A SSH 到 B,但您想從 B SSH 到 A?一個通用的解決方案是創建一個反向 SSH 隧道。從伺服器:

ssh -f -N -R 4222:localhost:22 CLIENT

現在您可以通過 SSH 連接到 CLIENT 上的埠 4222 並登錄伺服器。在該連接上打開 X11 轉發。

ssh -p 4222 -X localhost

手動設置方法

或者,您可以手動設置 X11 轉發到所需的顯示。如果要將:20CLIENT 上的顯示轉發到:0SERVER 上顯示:

ssh -L 6020:localhost:6000 CLIENT

只有顯示正確授權的應用程序才能使用 X 顯示。這採用“cookie”的形式(作為密碼的隨機生成的值)。您需要檢索 cookie 值並執行命令xauth add :20 MIT-MAGIC-COOKIE-1 …。請參閱在遠端 X 顯示器上打開一個視窗(為什麼“無法打開顯示器”)?. xauth list在您的情況下,您可以通過在 X 會話中執行命令來獲取 SERVER 上的 cookie 值。

建立 TCP 轉發並設置 cookie 值後,設置export DISPLAY=:20並執行您的應用程序。

引用自:https://unix.stackexchange.com/questions/208947