SSH隧道即SSH端口转发,在SSH客户端与SSH服务端之间建立一个隧道,将网络数据通过该隧道转发至指定端口,从而进行网络通信。SSH隧道自动提供了相应的加密及解密服务,保证了数据传输的安全性。
SSH隧道有三种端口转发模式:本地端口转发(Local Port Forwarding)、远程端口转发(Remote Port Forwarding)以及动态端口转发(Dynamic Port Forwarding)。对于本地/远程端口转发,两者的方向恰好相反。连接云手机时,使用的是本地端口转发,因此本文着重介绍本地端口转发的工作原理。
假设本地主机A1为SSH客户端,远端云主机B1为SSH服务端。从A1主机通过SSH登录B1主机,指定不同的端口转发选项(-L、-R和-D),即可在A1与B1之间建立SSH隧道,从而进行不同的端口转发。
· 应用场景
远端云主机B1上运行了一个服务,端口为2000,本地主机A1需要访问这个服务。假设云主机B1的IP为122.x.x.x,则该服务的访问地址为::2000
· 为什么需要本地端口转发?
一般来讲,云主机的防火墙默认只开启了22端口,如果需要访问2000端口,则需要修改防火墙。为了保证安全,防火墙需要配置允许访问的IP地址。但是,云主机的公网IP通常是网络提供商动态分配的,如果变更公网IP地址,防火墙配置就需要经常修改,造成不必要的麻烦。
· 什么是本地端口转发?
本地端口转发,是将发送到本地端口的请求,转发到目标端口,这样就可以通过访问本地端口,来访问目标端口的服务。使用-L选项,就可以指定需要转发的端口
· 扩展应用
以上语法中,目标地址也可以是其他主机的地址,以连接云手机场景为例,目标地址为云手机的私有IP地址,本地主机A1为本地设备,远端云主机B1为云手机服务器,那么建立SSH隧道的命令为:
ssh-L本地端口:云手机私有IP地址:目标端口 用户名@服务器的公网IP地址