1,SSH隧道的主要作用:
1,加密SSH客户端端至SSH服务器端之间的通讯数据
2,突破防火墙的限制完成一些之前无法建立的TCP连接
3,探测内网连通性的时候,如果HTTP协议,ICMP协议等都被防火墙所取代,但是恰好SSH内置网还是可以用的,就可以使用SSH协议把内网流量带出网
2,SSH隧道本地端口转发
1,适用于内网WEB服务器有公私网双IP;或者是A-C被限制但是B=C可达的内网场景
2,它的命令格式为:
ssh-Nf-L{本地端口}:{目标机器}:{目标端口}{中间机器}
#或
ssh-Nf-L{本地地址}:{本地端口}:{目标机器}:{目标端口}{中间机器}
3,例如以下拓扑,我们即可在VPS上执行如上命令
例如SSH-L:..1.6:21root
...34,现在环境模拟一下,三台LINUX主机分别为PC1PC2PC3
iptables-IINPUT-s..49.-jDROPPC1增加防火墙规则禁止实现PC3
PC1:..49.模拟VPS
PC2:..49.模拟WEB服务器
PC3:..49.模拟内网主机
即ssh-L:..49.:22root
..49.这样vpsssh自己的端口,可以访问内网主机PC3的22端口
3,SSH隧道远程端口转发
1,适用于WEB服务器,只有内网IP,可以出外网,并且内网主机之间可以互相访问
2,例如我们可以在WEB服务器上-(跳板机)上使用以下命令
SSH-Nf-R{远程VPS端口}:{目标机器}:{目标端口}{远程VPS机器}
3,例如以下拓扑,我们可以在WEB服务器上执行
SSH-R:1.1.1.10:22..1.10
4,现在环境模拟下,三台Linux主机A,B,C
A:..49.模拟VPS
B:..49.模拟内网服务器
C:..49.模拟内网主机
A不能访问B和C,B可以自由访问,配置以下命令
A:iptables-IINPUT-s..49.-jDROP
B:ssh-Nf-R:..49.:22..49.
A:ssh-p127.0.0.1
成功连接内网主机C的SSH
4,动态转发(类似翻墙)
动态转发多个简单,主要就是为你创建一个SOCKS5
例如:
存在主机A,B,C,其A-B=okB-C=okA-C=nook
A:..1.1恢复自己的计算机
B:..1.2动态转发服务器
C:..1.3谷歌
我们只需要再A主机使用命令SSH-D..1.2(类似小飞机的作用)
然后再把浏览器设置代理端口即可将流量转发到..1.2了,而这时自然也就可以出网上Google了
5,结论:
本地端口转发适用于跳板机双网卡,内外网皆可通,外网也可直接ping跳板机。
远程端口转发适用于跳板机可出外网,一般通过网关出口,外网不可直接到达内网。
其适用场景不仅仅与以上两种情况,偶尔也可以把内网当外网,外网当内网来进行SSH隧道的建立。
参考文档: