Ssh

如果伺服器配置不允許,則通過 SSH 轉發 X11

  • July 4, 2019

考慮這樣一種情況,我通過 SSH 從機器 A 登錄到機器 B,我在機器 A 上有一個 X 會話,我想在 B 上執行一個 X 程序。

ssh -X B使這項工作透明化。但是如果伺服器配置缺失X11Forwarding yes,我在伺服器上沒有root權限,伺服器管理員無動於衷怎麼辦?

顯然可以轉發 X11 連接,因為我可以通過 SSH 通道傳輸任何我想要的東西。事實上,如果本地 X 伺服器允許 TCP 連接,就很簡單ssh -R 6010:localhost:6000(根據顯示數字進行調整)。本地 X 伺服器只允許套接字連接的常見情況呢?如何以最少的安裝要求(尤其是在 B 上)方便、安全地進行 X 轉發?

@Demi 的答案很好,但我認為填寫它會很有幫助。

  • local – 服務於 Xserver 的本地機器。
  • remote – 為應用程序提供服務的遠端機器,驅動數據進入 Xserver

遠端/etc/ssh/sshd_config

X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes

遠端~/.Xauthority為空或不存在

在本地:

Xephyr -ac -screen 1280x800 -br -reset   :2 &
DISPLAY=:2 ssh  -fR 6010:/tmp/.X11-unix/X2  user@remote "DISPLAY=:10 xeyes"

在測試中,本地執行的是 Ubuntu 18.05,遠端執行的是 Debian Jesse。

與 tcp 埠通信時,協議 X11 與套接字通信時是否有任何不同?

也許您可以結合自己建議的使用ssh -R 6010:localhost:6000來將 X11 數據引入埠轉發,然後使用 nc 橋接 tcp 埠和 X11 套接字偵聽器之間的本地 gab,例如:

nc -l -p 6000 > /tmp/.X11-unix/X0

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