ssh隧道实现连接开发网数据库

背景:

我们经常去操作生产环境服务器,用命令操作比较不方便,所以我们想和平时开发的时候一样,用客户端操作数据库,下面就介绍平时用的最多的两种数据库客户端工具SQLyog和Navicat。

这两种工具链接的问题描述:

前提是用命令启动停止Mysql数据都正常的情况下。

若用平常的方式直接输入ip,用户名,密码,testConnection的时候会报错error2003,无法连接localhost。原因不是数据库没开权限,是没有使用ssh隧道。

1、SQLyog客户端的使用

ssh隧道实现连接开发网数据库

MySQL Host Address(一般为localhost),端口(一般都为3306),用户名(一般为root),密码,

直接点Connect或Test Connection都连接不成功,需要选择ssh进行配置,见下图:

ssh隧道实现连接开发网数据库

需要对Use SSH Tunneling进行打对勾,然后,输入必填项

SSH Host Address——>跳板机服务器的ip地址或域名

Username——>跳板机服务器的登录用户名

SSH Port——>默认是22,此处固定不变

Password——>跳板机服务器的登录密码

Mysql和ssh中的必填项都输入完毕后,在mysql界面,点击Test Connection,测试通过。然后点击Connect,进行数据库的链接

2、navicat客户端的使用

输入目标数据库的域名/IP (一般为localhost),端口(一般都为3306),用户名(一般为root),密码,如下图:

ssh隧道实现连接开发网数据库

然后不要点OK按钮,将标签切换到SSH这个tab,如下图:

ssh隧道实现连接开发网数据库

与SQLyog相同,选中Use SSH Tunnel,输入远跳板机的ip,跳板机的登录用户名和密码,端口22为默认的不需要修改,

然后点击ok按钮,保存链接即可

 

3.SQLyog配合Securecrt

Securecrt可以配置SSH 隧道

ssh隧道实现连接开发网数据库

 

把本地的端口通过ssh 隧道转发到目标mysql服务器的3306端口,然后ssh连接上,此时ssh隧道建立。

然后用sqlyog连接本地3306即可

ssh隧道实现连接开发网数据库

即可连接:

ssh隧道实现连接开发网数据库

 

总结:安全性和便利性确实是相悖的。在企业内网,建立ssh隧道,就相当于端口限制失去了效果,原来限制只有22端口可通,现在可以直接连开发网的3306端口;而命令行操作sql确实又效率极低,这之间存在矛盾。以前我们用nginx来反向代理,访问负载均衡来让它转发请求到生产服务器,而与代理不同,隧道可以轻松实现任意端口的访问,开发自己实现的隧道使得安全完全不可控。 在看重安全的企业,痛点是如何在安全的前提下尽量便捷。看起来,要做到安全不难,白名单原则可以解决90%的问题。但开发人员和黑客都不会轻易妥协。