[Linux/Mac] 利用 ssh tunnel 經由跳板連到別的網段的電腦
公司內部網路有切分不同的網段,不同網段之間不一定能互通,
舉例來說:
– Wifi LAN 只能連到 Office LAN
– Office LAN 可以連到 Lab LAN
那這樣假設我有一台連上 Wifi LAN 的電腦,要如何與 Lab LAN 的電腦連線呢?
搜尋了一下,可以利用 ssh tunnel 作到這件事~
參考資料:
下面就來說明一下步驟吧~
1. 建立與跳板之間的 ssh tunnel
假設我現在是在 Wifi LAN 上面,跳板電腦是位於 Office LAN 的 10.1.2.3,
而我想要透過跳板,用 ssh 連到我本來連不到的 Lab LAN 的 172.22.4.5 的話,
可以用下列指令建立 ssh tunnel:
ssh -NfL *:50022:172.22.4.5:22 10.1.2.3
上面這個指令裡用到的 -NfL 參數的意思是:
-N: 不在遠端電腦上執行指令,通常是用在 port forwarding 之用。
-f: 讓這個 ssh 程序進到背景中執行。
-L: 建立一個 port forwarding,將連到 local port 的資料導到遠端的 port。
因此,上述指令的意思就是從本機建立一個與跳板 10.1.2.3 間的 ssh tunnel,
之後只要連到本機的 port 50022,
就會自動由跳板 10.1.2.3 將封包轉送到 172.22.4.5 的 port 22~
2. 藉由 ssh tunnel 連線到遠端電腦
這邊很簡單,只要 ssh 本機的 port 50022 就行了,
像下面的指令達到的效果,就跟用 root 帳號以 ssh 的方式直接連線至 172.22.4.5 一樣:
ssh root@localhost -p 50022
如果是需要用 key 才能登入 172.22.4.5 的話,就一樣加上 -i 的參數:
ssh -i mykey root@localhost -p 50022
學會了 ssh tunnel 之後,
這種不同網段間本來不能互通的問題就有可能透過跳板解決,
真的是方便很多喔~~^^