呼吁各位大拿来赞助,突破互连网范围

亚洲城ca88手机版官网 8
亚洲城ca88手机版官网

虽然说现在phpMyadmin管理Mysql很好用,但是如果你的数据库已经比较大,鉴于国内网速,通过浏览器导入或者导出数据库就比较麻烦,估计你的数据库还没上传完,程序已经超时了,而且PHP对上传文件大小有限制,如果数据库超过这个限制,是无法上传的。

Mysql连接的奇特现象,恳请各位大牛来相助
请教各位大牛,关于数据库连接失败问题。

SSH隧道应用, 突破网络限制

用Navicat这个Mysql客户端就解决了以上问题。但是又有新的问题,通常情况下,为了安全起见,我们的Mysql会禁止除本地以外的所有IP登录,当然,你可以通过添加客户端IP来解决,但是我们的ADSL上网,IP是不固定的,每次管理数据库都要重新添加IP。

情景描述:
1、Mysql数据库安装在Linux服务器上。
2、多台Windows服务器与Linux服务器是在同一个内网。
3、这些windows服务器连接Linux服务器上的数据库。之前一直都能正常访问。
4、突然,某天
其中一台windows服务器出问题了(服务器运营商说是中病毒了),需要重装系统,结果重装系统后死活连不上Linux的数据库。

亚洲城ca88手机版官网 1文章配图:
静安寺 摄影: 怡文圣美

解决方法很简单,其实Navicat支持SSH通道,通过服务器上的SSH连接,再把服务器地址设为127.0.0.1,Mysql就是认为连接是说本地地址,就会顺利通过。

尝试的解决方案:
1、首先,确保这台出问题的windows服务器与Linux服务器网络是连通的, 于是用
ping 测试确实是连通的。
2、windows用CMD命令 telnet IP地址 3306 ,测试 发现连接失败,但是
80端口是连通的。得知结论 3306端口禁止访问。
3、Linux服务器把防火墙关闭 windows服务器也关闭防火墙
4、Mysql添加IP访问授权
5、再去尝试telnet 3306端口失败,用Navicat客户端 连接数据库
仍然失败,提示
2003-Can’t connect to MySQL server on ***

文/怡文圣美

亚洲城ca88手机版官网 2

请教大牛们几个问题:
现在,已经查了很多网上的资料 尝试了多种方法 仍然未能解决。
恳请哪位高手,能给个解决思路。或以前碰到类似的问题的解决方法是什么?
在此,谢过了!!!

这篇文章可以帮你解决下面三个问题:

在连接设置中,常规选项,IP填127.0.0.1,切换到SSH,填上服务器IP,SSH帐号密码。

  1. 不能直连服务器, 要先登陆跳板机, 造成客户端工具无法连接服务器.
  2. 服务器没有公网IP, 且只允许公司IP访问,
    要在家里操作要先远程桌面到工作机再登陆服务器, 速度很慢又不稳定.
    你有一台公网服务器, 希望能借它牵线搭桥.
  3. 用最简单的办法为服务器增加代理功能.

亚洲城ca88手机版官网 3

一. SSH隧道技术

要解决本文开头的三个问题, 最佳方案肯定是ssh隧道. 什么是ssh隧道呢?
请参考阮一峰老师写的SSH原理与运用:远程操作与端口转发.

阮一峰老师说到, ssh隧道有三种类型,
正好可以用来解决文章开头提到的三个问题. 这三个类型是:

  1. 本地端口转发.
  2. 远程端口转发.
  3. 绑定本地端口.

ssh隧道使用命令就可以创建, 工作中我们有先进的工具辅助,
可以为你省去不少麻烦, 比如你手头肯定会有的SecureCRT, 或者XShell.

二. 使用隧道绕过跳板机

用通俗的话讲, 这里的隧道在做这么一件事: 服务器A上有个程序,
监听3306端口,
存在一台服务器B分别和你的工作机以及服务器A的网络相通,
你在服务器A和服务器B上都有登陆权限,
隧道可以帮你把服务器A的3306端口映射到服务器B或者你的工作机上,
连接映射后的3306端口就等同于连接服务器A的3306端口.

工作中, 公司IT部为保证服务器安全, 工作机和服务器A之间的网络是不通的,
需要借助充当跳板机角色的服务器B. 你需要先ssh到服务器B, 再ssh到服务器A.
这对控制台下的一般管理还算能接受,
但对于不得不借助客户端工具的任务就无法实施了. 所以, 使用隧道,
把服务器A的3306端口映射到本地, 客户端工具中修改地址为localhost:3306,
客户端工具就能正常连接服务器A了.

使用工具创建隧道前先确保已将服务器B的ssh公钥上传至服务器A,
如果不明白我说的是什么,
请参考阮一峰老师写的SSH原理与运用:远程登录的第五节: 公钥登录

这里以XShell为例, SecureCRT类似. 打开服务器B的连接属性,
有一个被”特意”加粗显示的菜单叫隧道, 右边大红框中展示的是已经建立的,
点击”添加”按钮添加新隧道.

亚洲城ca88手机版官网 4连接属性->隧道

类型选择Local , 源主机一栏填写你想映射到哪里,
侦听端口填写映射后的端口, 这里填写localhost3306,
代表映射到本的3306端口. 目标主机为服务器A的IP, 目标端口为3306,
意思是把服务器A的3306端口映射到本地. 确定后就添加了一条映射规则,
以后只要打开这个连接, 这条映射规则就会生效.

亚洲城ca88手机版官网 5配置隧道

查看菜单里的”隧道窗格”可以显示当前会话所建立的隧道(转义规则标签)以及当前有哪些隧道正在通信(渠道标签).

亚洲城ca88手机版官网 6查看隧道状态

有些客户端工具也自带隧道功能, 比较常见的就是各种数据库连接工具,
如HeidiSQL, MySQL Workbench, Navicat等等

亚洲城ca88手机版官网 7数据库客户端配置隧道

总结: 有了ssh隧道后,
任意被跳板机”挡住”的服务器端口都可以映射到本地或者你能直连的服务器上.

三. 使用反向隧道绕过防火墙

这里的反向隧道应用于这样一种场景: 公司亚洲城ca88手机版官网,服务器A位于内网, 没有公网IP,
只能被公司IP的电脑登陆. 你有一台公网服务器C,
可以被家中电脑和服务器A主动连接.

利用反向隧道可以让服务器C成为连通家中电脑和公司服务器A的桥梁.
使用反向隧道的大致步骤为:

  1. 在公司登陆服务器A, 和服务器C之间建立反向隧道,
  2. 在家里登录服务器C,
  3. 连接反向隧道从而登陆服务器A.

可以发现服务器A是主动连接服务器C的,
这就顺利突破了公司防火墙和没有公网IP的限制. 这就是反向的含义.

具体的步骤是先用公司的工作机登陆服务器A执行命令:

ssh -R 7000:localhost22 root@ServerC_IP

含义是登陆服务器C后, 将本地的22端口映射到服务器C的7000端口上.
这时候不能退出, 不能关电脑, 不能断网络.
待你回到家后用家中电脑登陆服务器C, 执行:

netstat -lpn | grep 7000

会发现一个被打开的7000端口, 这就是隧道了. 该端口等同于服务器A的22端口,
你执行下面命令就可以登陆服务器A了:

ssh user@localhost -p 7000

工作机上如果退出服务器C的登陆, 隧道就会被关闭,
所以这种方案也只能适合工作机可以长时间不关的人.

读者可能会发现XShell的连接属性->隧道->添加->类型下拉框中有一个选项叫Remote
, 这种类型对应的也是反向隧道. 但笔者用这种方式建立的隧道无法使用,
既没有报错,
也没有成功映射端口.有知道这个选项到底干嘛用的请一定要告诉我哦 OO~.

总结: 在知道反向隧道之前,
你登录公司服务器的方法可能是先远程桌面到工作机, 再登陆公司服务器,
这之间可能还要先登录跳板机, 受远程桌面和网络质量的影响,
这样2次跳板后到达服务器的操作感受会很糟糕. 现在只需要跳转1次,
关键是省去了远程桌面, 操作流畅度会大大提高.

四. 使用代理隧道搭建代理服务器

阮一峰老是在SSH原理与运用:远程操作与端口转发中说的绑定本地端口类型指的就是代理隧道,
这点可以从XShell的连接属性->隧道->添加->类型->Dynamic
就可以看出:

亚洲城ca88手机版官网 8配置代理隧道

这样的隧道建立后, localhost:8080就是代理服务器地址了,
代理的网络环境就是会话所连接的服务器网络.

这种隧道非常适合用来调试线上系统. 比如采用分布式部署的应用, 从公网访问,
均衡负载会随机分配一台主机响应, 想要调试指定的一台主机怎么办?
你可以在均衡负载机上建立代理隧道, 浏览器中配置均衡负载为代理服务器,
浏览器地址栏输入主机的内网IP就可以访问指定的主机了.

总结: 虽然Linux安装ss5不难, 但在公司的服务器上安装就不妥了.
这种基于ssh的ss5代理方式比较轻量级, 无需在服务器上安装什么,
打开关闭很容易, 不相关人也无法使用, 简单又安全.

完.

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图