一、什么是SSH隧道?
现在的linux下安装的OpenSSH,默认都会支持SSH隧道。
SSH隧道:它可以支持让你本地的客户端电脑与远端的Linux建立一条可以称为虚拟线路的通道。它可以形象的表现为,你可以把这条隧道当成连接两端的一条虚拟的网络线路,通过这条线路,就可以实现双方的网络环境的互访:即你本端的的网络环境下的其它的电脑或网络设备,可以访问远端的SSH服务器可以访问的任何其它的网络设备或服务器,反之亦然。
二、使用SSH隧道。
您可以使用Windows10以上自带的SSH客户端,或者是linux下自带的ssh客户端,通过命令行参数的方式配置这条隧道的各种使用方式。由于本人对于这种命令行方式的操作不熟悉,在此不分享这种方式的使用方法。
三、VxTerm可以直接就配置和使用SSH隧道。
1、正向:Direct TCP/IP 方式
在本地监听一个端口,本地网络访问此端口时,VxTerm将本地访问请求通过SSH隧道将本地请求与服务器端指定的网络资源建立关联,达到访问本地的端口时可以访问到服务器端的网络资源的目的。
在这种方式下,本地的其它网络设备,只要访问VxTerm建立起来的一个本地可以访问的端口,其访问请求就可以直达远端的网络环境中的被定义的资源。
2、反向:Forward方式
在服务器端监听一个端口,VxTerm将本地网络中的某一资源与该端口建立关联,达到服务器端的网络访问该监听端口时,可以通过VxTerm与服务器建立的SSH隧道访问到本地资源的目的。
相当于是端口映射,俗称的内网穿透,就是这种方式。
以上两种方式,在服务端启动了OpenSSH后,服务端就不需要再进行其它的配置,只需要本端电脑运行一个VxTerm,配置好本地的隧道信息,启动后就可以达到目的。
四、VxTerm可以建立的代理功能:
1、反向代理:一般可以称为内网穿透。
可以达到服务器端的设备访问本地网络的目的。
比如,本地网络在没有互联网静态IP和互联网IP的时候,可以将本地的web服务端口映射到服务器端,互联网用户访问服务器端的IP端口即可以访问到本地发布的WEB服务。
2、正向代理:分两种方式
2.1 在本地监听特定端口,建立与服务器端特定资源的一对一的关联。此方式与反向代理的方式基本一致。
2.2 Sock5方式。
当前的VxTerm 版本仅支持1和2.1两种方式,2.2中的Sock5方式将在以后的版本中实现。
五、操作说明:
VxTerm 使用内置的VxMatScript脚本方式实现隧道的建立、启动、停止、修改等操作。
5.1、 TunnelList ALL|Run|Stop|ID
列出当前配置中的所有隧道。
>>标识================:ZPF01
>>类型 :(F)orward
>>描述 :反向代理:将本地的192.168.1.254:23映射到服务端的25423
>>分类名 :测试
>>远程监听IP :
>>远程监听端口 :25423
>>本地目标IP :192.168.1.254
>>本地目标端口 :23
>>正在运行 :否
>>最后消息
>>标识================:ZPF022
>>类型 :(F)orward
>>描述 :反向代理:将本地的192.168.1.6:5000映射到服务端的5000
>>分类名 :测试
>>远程监听IP :
>>远程监听端口 :5000
>>本地目标IP :192.168.1.6
>>本地目标端口 :5000
>>正在运行 :否
>>最后消息
>>标识================:ZPF03
>>类型 :(D)irect
>>描述 :正向代理:将服务端的192.168.0.33:5555映射到本地5555
>>分类名 :测试
>>本地监听IP :
>>本地监听端口 :0
>>远程目标IP :192.168.0.33
>>远程目标端口 :5555
>>正在运行 :否
>>最后消息
当隧道已启动正在运行的时候,正在运行为是,最后消息显示该隧道在启动运行过程中收到的一些关键的信息。
5.2、 TunnelAdd ID标识
创建一个隧道。
5.3、 TunnelEdit ID标识, 名称 = 值
修改一个隧道的配置。有效的名称和值如下:
序号 | 名称 | 值 |
1 | 标识 | 字符串,不要有逗号等特殊符号,系统不进行校验,如果含有这些特殊符号,可能会造成无法正常使用。 |
2 | 类型 | 1、(F)orward 反向代理 2、(D)irect 正向代理 3、(S)ock5 未开放。 |
3 | 分类名 | 字符串,用于分类分组管理。 |
4 | 描述 | 字符串,描述此隧道的功能等 |
5 | 本地监听IP 、 Local_ListenIP | 用于正向代理,可为空,则表示监听本地所有IP |
6 | 本地监听端口、Local_ListenPort | 用于正向代理,默认为0。请指定有效值1-65535,否则无法正常启动。 |
7 | 远程目标IP、Remote_DestIP | 用于正向代理 |
8 | 远程目标端口、Remote_DestPort | 用于正向代理 |
9 | 本地目标IP、Local_DestIP | 用于反向代理 |
10 | 本地目标端口、Local_DestPort | 用于反向代理 |
11 | 远程监听IP、Remote_ListenIP | 用于反向代理 |
12 | 远程监听端口、Remote_ListenPort | 用于反向代理 |
每条隧道一般由 监听IP:监听端口,目标IP:目标端口组成。
正向代理为本地监听,访问指定的远程目标IP和端口;
反向代理为远程监听,访问指定的本地目标IP和端口。
当隧道已启动时,不允许修改。
5.4、 TunnelDel ID标识
删除指定的隧道。
当隧道已启动时,不允许删除
5.5、 TunnelStart ID标识
启动一条隧道。
隧道启动后,请用 TunnelList 查看其运行状态。
当反向代理中的远程监听端口为0时,隧道可以多次启动,每次启动时服务器会自动分配一个可用的端口。最后分配的端口请用TunnelList 查看。
5.6、 TunnelStop ID标识
停止隧道。
六、测试:
运行 TunnelStart zpf01
成功后,可以在服务端用 netstat -ant | grep 25423 看到,服务器已监听。
在服务器端中访问 telnet 127.0.0.1 25423
可以正常访问到本地的 192.168.1.254:23的资源。