【Linux】透過 ssh 使本地 port 連接遠端 port 的內容 (ssh use local port to connect remote port)

➣ Reading Time: 4 minutes

前言

這篇的需求要解決的是,大部分時候我們都會使用 local port 進行開發

例如:jupyter notebook,通常都會指定到 localhost:8888 這個 port

但其實一直 local 並不是那麼的方便 (例如:工作環境會被限制在本地電腦上)

透過 ssh forwarding 可以稍微讓這件事情變得靈巧一些

具體來說,我們可以在另外一台電腦輸入 localhost:1234,也能夠直接連到目標開發主機的 localhost:8888 這個 port 上進行遠端開發

實作方法

其實要做程式碼非常簡單,就是一行把 ssh 做 port forwarding 的程式碼而已

ssh -L 5000:localhost:8888 <username>@<remote_ip>

這邊說明一下,我們想用本地主機的 localhost:5000,
連接上遠端主機的 localhost:8888,
而遠端主機的 ip 跟 username 為 @

單純在背景連線

通常只輸入上面那行,我們也會連進遠端主機內,如果我們沒有想進行連線的動作,只「單純背景連線」,我們加個 「-N」的 flag 即可。

多重 port 連接

有時候我們會連接的 port 不只一個,
例如:5000, 5001, 5002 可能都是在開發的狀態

這時我們多下幾個 「-L」的 flag 就可以實現多重 port 連接

ssh -L 9000:localhost:5000 -L 9001:localhost:5001 -L 9002:localhost:5002  <username>@<remote_ip>

上面的結果就會變成:

  • 本地 9000 -> 遠端 5000
  • 本地 9001 -> 遠端 5001
  • 本地 9002 -> 遠端 5002

Reference

預設圖片
Howard Weng

我是 Howard Weng,很多人叫我嗡嗡。這個網站放了我的各種筆記。希望這些筆記也能順便幫助到有需要的人們!如果文章有幫助到你的話,歡迎幫我點讚哦!

文章: 673

★留個言吧!內容有誤或想要補充也歡迎與我討論!