Linux

通過兩個 SSH 隧道轉發 X11

  • March 10, 2022

為了工作,我必須通過機器 A 從本地機器 ssh 到機器 B。問題是機器 A 沒有 X11 轉發,我沒有超級使用者權限來更改它。我確實在機器 B 上擁有超級使用者權限,並且它打開了 X11 轉發。

有沒有辦法將 X11 從 B 通過 A 轉發到我的本地電腦,而不在 A 上打開 X11 轉發?

我嘗試執行 ssh -t -X user@A ssh -X user@Bssh -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

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