这是一种网络的保护策略,且不需要root用户授权的网络跳转。学会这个,可以应用到其他应用中,不仅仅用于mysql的连接。
先说一下场景:
mysql所在服务器A:172.16.131.7
中转服务器B:172.16.131.13
windows客户端
服务器A只对131段的机器开放了22和3306端口,其他段的之开放22端口。
服务器B对外的端口都开放。
windows客户端需要使用服务器A的mysql服务
1.首先第一步我们使用mysql客户端自带的配置,访问服务器A的mysql服务。服务器A的3306端口不对外开放,只有22端口。需要跳过,这样来配置:
在常规页面这样的:
注意:常规页中的主机名,是localhost
为什么这个样子?Windows客户端通过访问服务器A的22端口建立通道,然后在服务器A的22端口跳转到本地3306端口来访问mysql。
2.下面就用命令来实现上面的ssh页面配置。
需要支持ssh命令哦,不支持的话需要自己来安装ssh服务。
点击可以参照文章
上面的意思是:windows与131.7建立ssh通道,本机启动监听3306端口(第一个),用hywlptapp这个用户,通过ssh通道的22端口(默认端口)登录,并与131.7的3306端口建立连接。
简单来说:windows的3306端口和服务器A的3306端口建立通道了,可以访问本机的3306端口就能访问服务器A的3306了。
学会这个命令,就可以通过22端口跳到其他服务器了。
3.只能监听3306吗?答案是否定的。也可以监听别的端口访问。
ssh -L 9999:localhost:3306 hywlptapp@172.16.131.7
解读:本地监听9999端口,与服务器A的3306端口建立了连接。
4.windows和服务器A之间可以通过别的服务器连接吗?OK,没问题。
windows客户端启动3306端口,访问服务器B的22端口,再与服务器A的3306端口建立通道。
服务器B没有做任何配置,都是在windos上面执行命令的。
4.如果中间不止一台服务器在中间,怎么办?
4.1 服务器B启动监听服务,连接服务器A。
4.2 windows启动监听连接服务器B。
第3,4个的最终效果是一样的,但是服务器B又多做了一步操作,这样即使有多台服务器,也都是可以复制的。
服务器B监听9999端口,访问服务器A的3306
windows监听3306,,访问服务器B的9999端口。
这样就形成一条链路:
这样即使有多台服务器在中间也可以进行网络跳转了,ssh又很通用,适用范围广。