
我有一台Macbook A
,一台公共伺服器B(public IP: 1.2.3.4, internal IP: 10.0.0.2)
,一台內部伺服器C(internal IP: 10.0.0.3)
A
B
可以透過B的公網IP連接,也可以透過C的私網IPB
連接,但不能直接連接C
A
C
現在我想連接到C:2345
from A
,所以我想我可以在 ? 中進行連接埠轉送B:1234=>C:2345
?
我應該運行什麼命令以及應該在哪台伺服器上運行?
我試過:
ssh -NfR 1234:localhost:2345 10.0.0.3
ssh -L 1234:0.0.0.0:2345 10.0.0.3
兩者都不起作用。
答案1
去做確切地您所要求的 ( B:1234=>C:2345
) 應該運行在B
:
# Not recommended. Read along.
ssh -NgL 1.2.3.4:1234:localhost:2345 10.0.0.3
它還需要1234
在B
防火牆中開啟連接埠。然後1.2.3.4:1234
從外部連接到10.0.0.3:2345
就像從自身連接一樣C
(透過其環回介面)。任何人都可以連接,因此請記住,如果伺服器C
(無論是什麼伺服器)沒有密碼保護等。
一種更簡單、更安全的從 到A
的方法C
如下。它並不完全符合您的要求,但可能正是您想要的。在A
:
ssh -NL 1234:10.0.0.3:2345 1.2.3.4
然後連接到127.0.0.1:1234
onA
即可到達2345
上的連接埠C
。C
將看到來自 的流量B
。此連接僅適用於A
,因此該方法比前一種方法更安全。
如果您想要允許其他電腦(例如:從 LAN 所在A
位置)連接,您應該使用-g
選項並指定綁定位址。例如:
ssh -NgL A_LAN_address_here:1234:10.0.0.3:2345 1.2.3.4
在這種情況下,請相應地重新配置防火牆A
,然後連接到A_LAN_address_here:1234
。
答案2
在 Mac 上,您首先要做的
ssh -L2345:10.0.0.3:2345 10.0.0.2
這會在 Mac 上開啟本機連接埠 2345,該連接埠直接連接到 10.0.0.3 上的 :2345
然後您只需127.0.0.1:2345
在 Mac 上訪問即可。任何前往此連接埠的內容都將透過 ssh 進行隧道傳輸並轉到10.0.0.3:2345
.對於該伺服器,它似乎來自10.0.0.2
.