使用SSH的端口转发,可以突破一些网络限制,加密传输或者内网穿透。SSH的端口转发有三种模式,本地端口转发,远程端口转发和动态端口转发。

本地端口转发

本地端口转发,是把对本端口的请求转发到远程服务器的对应端口:

ssh -L 5000:localhost:1000 [ServerAddress]

当请请求本地的5000端口时,该请求会转发到服务器的1000端口。

小结:本地->远端

远程端口转发

远程端口转发,是把对远程端口的请求转发到本地的对应端口上。使用远程端口转发,可以实现内网穿透。

ssh -R 1000:localhost:5000 [ServerAddress]

当请求服务器的1000端口时,该请求会被转发到本地的5000端口。

注意:Linux上的远程端口转发,远程服务器默认监听的是本地端口,如果需要监听外部IP端口,要开启GatewayPorts

vi /etc/ssh/sshd_config

找到#GatewayPorts no,删除前面的#号,并把no改为yes

然后重启ssh服务:

systemctl restart sshd

小结:远端->本地

动态端口转发

动态端口转发,可以将本地的请求转到远程服务器,并由远程服务器帮助请求目标地址。

ssh -D 1888 [ServerAddress]

所以可以将请求代理到1888端口,并由服务器去请求以突破网络限制。