Ssh
我需要什麼來創建到遠端主機上執行的本地網路服務的 SSH 隧道?
我想將 virtualbox 電腦連接到遠端電腦上的本地服務。我可以連接到本地服務,但是遠端服務有問題,因為在目的地,服務在本地 LAN 中執行。
這是第三台電腦和第三台電腦上的兩個介面的圖形。我想連接到 10.0.0.8:200,因為我想連接的服務只在遠端電腦上的本地網路上執行。
+--------------------+ | | | VirtualBox | | 192.168.11.11:200 | | | +-----+--------------+ | v +--------------------+ | | | Local Computer | | 192.168.11.41:200 | | | +-----+--------------+ | v +--------------------+ | | | Remote Computer | | 8.8.8.8 | <- I can connect here | | | 10.0.0.8:200 | <- how do I connect here? | | +--------------------+
我可以在本地電腦和遠端電腦之間打開一條隧道,但這並不能讓我連接到本地網路 10.0.0.8 上的服務。
到目前為止,我所擁有的是本地電腦和遠端電腦之間的 SSH 隧道。否則,我可以在 VirtualBox 和本地電腦之間進行連接(我有一個橋接網路設置,可以按預期工作。)
ssh -L 200:8.8.8.8:200 example.com
所以我缺少的是 8.8.8.8 和 10.0.0.8 之間的連接。如何在兩者之間創建一個隧道/代理,使我的本地電腦可以使用 10.0.0.8:200 上的服務?
首先,您的命令中有一個明顯的錯誤。您的程序僅在本地網路上執行,但您使用 .將連接轉發到公共 IP
-L 200:8.8.8.8:200
。所以你應該-L 200:10.0.0.8:200
改用。其次,通過使用
-L 200:10.0.0.8:299
,ssh 客戶端預設只會監聽localhost:200
。可以使用該GatewayPorts
選項配置此行為。要明確告訴 ssh 客戶端接受來自其他主機的連接,您可以使用-L 0.0.0.0:10.0.0.8:200
. 來自man ssh_config
:GatewayPorts Specifies whether remote hosts are allowed to connect to local forwarded ports. By default, ssh(1) binds local port forwardings to the loopback address. This prevents other remote hosts from connecting to forwarded ports. GatewayPorts can be used to specify that ssh should bind local port forwardings to the wild‐ card address, thus allowing remote hosts to connect to forwarded ports. The argument must be yes or no (the default).