Ssh

我可以在沒有轉發支持的情況下在租用的主機上通過 ssh 轉發 X11

  • November 21, 2018

我有一個 GUI 程序,它具有在租用的 Ubuntu 主機上執行的所有必要庫,但主機本身拒絕嘗試在使用 -X 的 ssh 連接期間設置 X 轉發。strace顯示 UI 程序可以執行,但在沒有 DISPLAY 時停止。我對租用的主機沒有root訪問權限,它沒有配置為普通使用者轉發X11,並且支持主機說他們不支持使用者。

有什麼方法可以進行 X 轉發,因為我只需要一個關鍵程序嗎?ssh -X -v僅報告:

OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g  1 Mar 2016
...
debug1: Remote: /usr/home/ipdb/.ssh/authorized_keys:2: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding
debug2: x11_get_proto: /usr/bin/xauth  list unix:10.0 2>/dev/null
debug1: Requesting X11 forwarding with authentication spoofing.
debug2: channel 0: request x11-req confirm 1
...
X11 forwarding request failed on channel 0

鑑於本地和遠端主機都在防火牆後面(因此 DISPLAY=$REMOTEHOST:0 不起作用),有什麼方法可以手動配置它?該主機具有我從相同 dist 版本的 Ubuntu 主機複製的 xauth 和 xhost。

~/.ssh/rc 在連接期間執行,但沒有傳遞任何參數。

我懷疑主機上不存在對 /usr/bin/xauth 的引用,這是問題所在嗎?我可以執行自己的 sshd 並使用正確的 xauth 路徑對其進行配置嗎?

按照各種指南,我將文件複製/etc/ssh/sshd_config到一個新目錄,然後在同一目錄中執行以下命令來創建一個新的密鑰對:

ssh-keygen -f myrsa -N ''

我從類似的 Linux 系統中複製了一個 xauth 執行檔,並將其放在同一目錄中。

然後我用以下幾行修改了 sshd_config 文件:

Port 22220

HostKey /path/to/directory/myrsa

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost no
XAuthLocation /path/to/directory/xauth

我現在可以使用以下命令在埠 22220 上啟動我自己的啟用 X 轉發的 ssh 伺服器:

/usr/sbin/sshd -d -D -f /path/to/directory/sshd_config

並使用 ssh 命令連接到它:

ssh -X -p 22220 <hostname>

連接後,我檢查了環境變數 DISPLAY 是否已設置。

為了在這台主機上執行我的 X 程序,我還需要從安裝了 X 支持的類似 Linux 系統中將幾個庫文件(例如 libxkbfile.so.1)複製到同一目錄中;我通過ldd在我試圖執行的 X 程序上執行來確定這一點,尋找未解析的庫,然後我在工作系統上找到它們,ldconfig -p | fgrep libxkbfile.so.1並使用 scp 將它們複製到目標系統。然後我設置

set LD_LIBRARY_PATH=/path/to/directory

以便可以找到其他庫,並且能夠執行 X 程序並在我的本地系統上查看 UI。

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