Cody Blog

Software development

SSH Tunnel

使 ssh 遠端連線的人很多, 但是 ssh 這個指令其實還有一些很有趣的tunnel用法,可以讓你擺脫一些限制。這邊稍微筆記一下:

Local port forwarding

在本地端開一個 port,然後 remote machine 會把封包轉送到指定的位置:

::bash
ssh -L <local_port>:<target_host>:<target_port> remote_user@remote_host

例如本地端防火牆只有開 22 port, 而封鎖了8080 port, 此時可以透過 local port forward 的方式,達到連線到遠端 8080 port。

::bash
ssh -L 1234:localhost:8080 cwliu@118.100.100.1

這時連到 localhost:1234,就相當於連線到 118.100.100.1:8080,避開防火牆的效果

Remote port forwarding (Reverse SSH)

這邊的-R代表的是 remote 之意,直接舉個例子

::bash
ssh -R 5900:localhost:22 guest@remote-pc

在遠端 remote-pc 會開一個 5900 port,其流量會導到 localhost 的 22 port。實際的應用是當 local machine 沒有固定 IP 的時侯,可以先建立好此 ssh 連線。就可以讓遠端機器透過 localhost:5900 直接連線回local。

SOCKS Proxy Forwarding

主要可以用來保護非信任的網路,當不想讓別人知道自己的 http 連線時, 或是可以避開 IT 網路控管,可以用這個:

::bash
ssh -C -D 8080 cwliu@123.123.123.123

使用 -D參數建立一個 socks proxy,瀏覽器設定 localhost:8080 的 SOCKS v4 proxy 就可以讓出去的 http 連線透過 ssh 安全地到達遠端機器。 -C是把資料先壓縮後再傳送

參考資料

Linux

Related Posts

Comments