SSH Secure tunnel forwarding

在 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