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