在 SSH 連線有一個 Secure Tuunel (加密通道)方式,
可以將 local 與remote server 之間建立一條 secure tunneling 通道。
這通道的方向可以是 local -> server 或者 server -> local。
首先關於 local to server 以 L (left) 表示, server to local 以 R (right) 表示。
其中在通道的傳輸都是透過 SSH 22port 來做 proxy,以下會再舉例說明:
本地 local 導入遠端端口服務
ssh -L 可以讓我們方便在本地就可以使用到遠端server 的服務。
建立的方式如下:
ssh -L [local_port]:[remore_host]:[remote_port] sshuser@serverip
或者
SSH -L [localhost:]port:remore_host:hostport
舉例來說,在我們本地端的 3306 希望導向 hello.org 的 3308,此時會透過 local 的 3306 port 透過 local 22 port 傳送到 server 的 22 port ,再傳送到 hello.org 的 3308 port,在本地的 localhost:3306 就會等同對應到 hello.org:3308 port:
ssl -L 3306:hello.org:3308 sshuser@serverip
我們可以在透過 netstat -ntlp 確認 port 是否已連接,移除連線最簡單可透過 top 找出 process 進行 PID kill 。
遠端主機導入本地 local 端口服務連線
ssh -R 可以反方向,由地端的服務端口導向遠端主機,讓遠端主機可以使的本地指定端口的服務。
建立的方式如下:
ssh -R [remote_port]:[localhost]:[local_port] sshuser@serverip
例如,我們希望將 server 的 80 導向本地的 8081,假設 server 80 有對外開放,則外面的人就可以透過 server 80 port 來訪問到本地 8081 的服務。
ssh -R 80:localhost:8081 sshuser@serverip