Linux - SSH 透過 Proxy jump (Bastion Site) 至遠端主機
Bastion 主機( 堡壘機 )是常見的一種在防火牆後面可以訪問到各主機的機器,但是透過 Proxy Jump 方式可以直接於 Client 藉由堡壘機跳躍至目的主機,實現進階的 ssh 技巧。
1. ProxyJump
依據 ssh man 手冊 -J 參數指出,目的主機可以先透過跳轉主機建立連線來做 TCP 的 forwarding 至目標主機。
-J destination Connect to the target host by first making an connection to the jump host described by and then establishing a TCP forwarding to the ultimate destination from there.
原本步驟需 ssh 至 bastion 後再 ssh 至 serverA ,可以改成一行指令解決。
2. ssh ProxyJump 指令
2.1 單一主機
|
|
EX. Client 只開放允許 bastion 主機連線, serverA 有防火牆規則阻絕只能透過 bastion 主機連線。
|
|
2.2 多重主機
|
|
EX. Client 只開放允許 bastion 主機連線, serverA 有防火牆規則阻絕只能透過 bastion 主機連線, serverB 只能透過 serverA 連線。
3. 設定 ssh_config 檔案
上述透過指令很方便可以達成,如果每次都有多台不同主機要連線,可以藉由設定 ssh_config (~/.ssh/config
)來快速自動連線,而不用輸入一長串指令。
|
|
EX. Client 只開放允許 bastion 主機連線, serverA 有防火牆規則阻絕只能透過 bastion 主機連線。
|
|
4. 進階操作
掌握 ssh ProxyJump 可以與 ssh Port Forwarding 組合技操作來達成Port 轉發
EX. Client 只開放允許 bastion 主機連線, serverA 有防火牆規則阻絕只能透過 bastion 主機連線,將 serverA 的 8080 port 來拉至 Client 端上使用。
|
|
詳細使用 Port Forwarding 請參考 HowHow 的Linux - 設定 SSH Tunneling (Port Forwarding) 文章。
5. 小結
除了 ssh 之外也能將其換成 scp 的 ProxyJump 來操作 EX. scp -o 'ProxyJump [email protected]' ExampleFile.txt [email protected]:/tmp/
,背後原理都是透過 ssh 協定來操作,是一種非常方便且好用的技巧。
如果你還沒有註冊 Like Coin,你可以在文章最下方看到 Like 的按鈕,點下去後即可申請帳號,透過申請帳號後可以幫我的文章按下 Like,而 Like 最多可以點五次,而你不用付出任何一塊錢,就能給我寫這篇文章的最大的回饋!