Linux
通過兩個 SSH 隧道轉發 X11
為了工作,我必須通過機器 A 從本地機器 ssh 到機器 B。問題是機器 A 沒有 X11 轉發,我沒有超級使用者權限來更改它。我確實在機器 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
在登錄時輸出。
將此添加到您的 ~.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
您可以通過 A 進行埠轉發。使用
$ ssh -Nf -L2222:B:22 A
啟動和後台一個 ssh 程序,該程序將從您的本地電腦通過 A 轉發到 B。然後使用連接到 B
$ ssh -p 2222 -X localhost