使 ssh 遠端連線的人很多, 但是 ssh 這個指令其實還有一些很有趣的tunnel用法,可以讓你擺脫一些限制。這邊稍微筆記一下:
Local port forwarding
在本地端開一個 port,然後 remote machine 會把封包轉送到指定的位置:
ssh -L <local_port>:<target_host>:<target_port> remote_user@remote_host
例如本地端防火牆只有開 22
port, 而封鎖了8080
port, 此時可以透過 local port forward 的方式,達到連線到遠端 8080 port。
ssh -L 1234:localhost:8080 cwliu@118.100.100.1
這時連到 localhost:1234,就相當於連線到 118.100.100.1:8080,避開防火牆的效果
Remote port forwarding (Reverse SSH)
這邊的-R
代表的是 remote 之意,直接舉個例子
ssh -R 5900:localhost:22 guest@remote-pc
在遠端 remote-pc
會開一個 5900 port,其流量會導到 localhost 的 22 port。實際的應用是當 local machine 沒有固定 IP 的時侯,可以先建立好此 ssh 連線。就可以讓遠端機器透過 localhost:5900 直接連線回local。