前言
這篇的需求要解決的是,大部分時候我們都會使用 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