ssh tunnel 三种模式

环境介绍:

主机 位置 公网 内网IP 角色
host-a 局域网1 否     192.168.0.1 ssh client  
host-b 局域网2、公网 192.168.1.1 ssh server  
host-c 局域网2 192.168.1.2 ftp server
  • 动态转发(socks5代理)

场景:host-a无法直接通过nat网关访问一些互联网资源

[root@host-a ~]# ssh -NfD *:1080 root@host-b

在host-a上面监听socks5端口代理数据,数据通过SSH隧道动态转发到host-c访问互联网资源, 常用于本地代理上网,相当于SS提供的功能

  • 本地转发(正向代理)

 场景:host-a不允许直接访问host-c的ftp服务

[root@host-a ~]# ssh -NfL *:21:192.168.1.2:21 root@host-b

 在host-a上面监听21端口代理数据,通过SSH隧道安全与host-b传输数据,常用于正向一对一代理,相当于iptables dnat

  • 远程转发(反向代理)

场景:要从公网连接host-a ssh服务,但是nat网关无法映射端口

#修改SSH server的配置文件(否则sshd只能监听127.0.0.1)

[root@host-b ~]# vim /etc/ssh/sshd_config
GatewayPorts yes
[root@host-a ~]# ssh -NfR *:2222:127.0.0.1:22 root@host-b

[root@host-a ~]# ssh -NfR *:2222:192.168.1.1:22 root@host-b

在host-b上面监听2222端口,数据通过SSH隧道穿透nat设备访问host-a的22端口,常用于内网穿透,相当于frp、ngrok

原文地址:https://www.cnblogs.com/37yan/p/9003423.html