SSH隧道是SSH协议服务端提供的一种扩展功能,一般仅在linux服务器的SSH服务端中提供,其它的如交换机、防火墙等网络设备中,虽然支持SSH协议,但多数并不提供SSH隧道功能。
所以,在通过SSH协议连接远程设备时,SSH隧道并不一定可以使用。
那么,SSH可以为咱们带来什么样的功能呢?
SSH隧道可以让双方的网络环境互相访问!
怎么理解?
当A可以通过SSH协议连接到B、并且B的SSH服务端提供SSH隧道模块功能时,那么所有在A区的其它机子如A0、A1、... An就可以访问到B机所在的环境中B机可以直接访问到的其它的资源如B0、B1...Bn,反过来同时B区的所有的机子都可以通过A访问B所建立的这条隧道访问到A区的所有的机子资源。A与B区之间的网络策略并不能阻止此类的访问权限。
一、A区访问B区的资源的原理:
在A机上监听一个端口如2022,并通过隧道将此端口与B区的B2的22端口建立映射,那么所有在A区中的其它机子都可以访问A的2022端口,直接访问到B2:22端口。
二、B区访问A区的资源的原理:
在B机(远端)上监听一个端口,如2022,并通过隧道将此端口与A区(本端)的A2:22端口建立映射关系,那么,所有在B区中的其它机子都可以访问B:2022,直接访问到A2:22端口。
以上两种方式都是一对一的映射关系。
三、动态的映射关系:此隧道映射仅支持从A到B的方向,不能支持从B到A的方向。
启动此隧道后,A区中的其它机子如A0可以配置socks动态代理(在操作系统代理服务器中设置或者是应用软件中设置(如果支持的话)),就可以直接访问到B区中的任何一台机子。
此种方式非常有用。
其实,当B机上的SSH服务端支持SSH隧道后,就相当于是在A机和B机之间拉了一条物理的网线,同时A机和B机就充当了各自区域的防火墙的功能,而防火墙的功能一般都是可以实现:端口映射,限制就是B到A区无法实现动态隧道而已。