
為了工作,我必須從本地電腦透過電腦 A 進行 ssh 存取電腦 B。我在機器 B 上確實擁有超級使用者權限,並且它打開了 X11 轉發。
有沒有辦法將 X11 從 B 透過 A 轉發到我的本機計算機,而無需在 A 上開啟 X11 轉送?
我嘗試運行
ssh -t -X user@A ssh -X user@B
,ssh -t user@A ssh -X user@B
但機器 A 仍然X11 forwarding request failed on channel 0
在登入時輸出。
答案1
將其新增至您的 ~.ssh/config 中:
Host BviaA
HostName hostB
ProxyCommand ssh user@hostA nc %h %p 2> /dev/null
然後ssh -X user@BviaA
應該工作
請注意,在上面的配置部分中,我用來Host BviaA
使發生的情況更加明顯。您也可以使用Host hostB
讓它完全透明地工作:(ssh -X user@hostB
就好像不需要網關一樣。)
或作為無需任何配置更改的單行測試:
ssh -X -oProxyCommand="ssh user@hostA nc %h %p" user@hostB
答案2
非常感謝@rudmeier的回答。
我遇到了問題數控使用 ssh 時的選項,但這種變化(基於 @aDroid 的解釋這裡)確實為我工作。所以這本質上是一樣的一句話回答對於較新版本的 OpenSSH,@rudimeier 的:
$ ssh -X -oProxyCommand="ssh [email protected] -W %h:%p" [email protected]
@用戶4556274回答也為我工作(也感謝你)。
我只是在這兩個步驟中添加用戶名,以向像我這樣的新手闡明它是如何工作的(輸入第一個命令後,本地主機端口2222 的行為就像是機器B 中的端口22 一樣;所以在第二個指令中,我們傳遞機器B 的使用者名稱):
$ ssh -Nf -L2222:destination.host-B.address:22 [email protected]
$ ssh -p 2222 -X userB@localhost
答案3
您也許可以透過 A 進行連接埠轉送。
$ ssh -Nf -L2222:B:22 A
啟動並後台 ssh 進程,該進程將從本機透過 A 轉送到 B。
$ ssh -p 2222 -X localhost