我希望能夠從任何地方直接連接到沒有公用 IP 位址的嵌入式 Linux(稱為 C)。
C 可以建立到伺服器的連線(使用 SSH -R),如果我透過 SSH 進入伺服器,我就可以透過 SSH 進入嵌入式 Linux。
但是,我希望能夠從客戶端透過 SSH 連接到 C,而不必先透過 SSH 連接到伺服器。 (我無法使用 SSH -R 從 C 到客戶端建立連線)
這可能嗎?
答案1
您可以相當輕鬆地做到這一點。一種方法是使用 SSH 的遠端連接埠轉發,C 透過這種方式告訴伺服器將連接埠轉發回它,如下所示:
ssh -R 2222:localhost:22 server
當從 C 執行此命令時,將告訴伺服器取得到連接埠 2222 的任何連線並將它們轉送到連接埠 22 上的 C。
同樣,您可以透過防火牆規則在伺服器上設定連接埠轉送。
答案2
如果您希望能夠連接到轉發的端口,您需要四件事:
- 將伺服器公用 IP/主機名稱指定為 的第一個參數
-R
,否則它將僅偵聽localhost
,這顯然無法從伺服器外部存取。 - 配置伺服器
GatewayPorts
,這將允許從外部存取轉送的端口 - 使用
-g
開關基本上允許客戶端進行相同的操作 2222
在伺服器防火牆中開啟連接埠。
該指令可能如下所示:
ssh -g -R server:2222:localhost:22 server