Ssh
如果伺服器配置不允許,則通過 SSH 轉發 X11
考慮這樣一種情況,我通過 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