通过SSH Tunnel访问远程mysql服务器

上一篇文章利用Stunnel这个软件来连接远程的redis服务器,该方法同样适用于连接mysql服务器。不过这种方法需要在服务器上配置,有点麻烦。

因为我有权限ssh到mysql那台机器,这样一来就简单了,直接利用ssh tunnel。

ssh -f -N -L 33060:127.0.0.1:3306 -p 22 name@example.com

其中-f表示后台运行,
-N表示此ssh连接不用于执行远程指令。仅用于端口转发时需要加这个参数,
-L 33060:127.0.0.1:3306表示将本机的33060端口转发到远程机器的127.0.0.1:3306。因此连接127.0.0.1:33060就相当于连接了远程机器的127.0.0.1:3306

执行完后,可以看一下33060端口是不是真的可用:

netstat -an | grep 33060

tcp6       0      0  ::1.33060              *.*                    LISTEN     
tcp4       0      0  127.0.0.1.33060        *.*                    LISTEN 

看样子是正常的,再用mysql客户端连接了试一下吧。

直接用ssh已经够用,想要锦上添花的话,可以用autossh,这货给ssh加了掉线重连的功能。
brew下安装:

brew install autossh

运行:

autossh -M 12345 -f -N -L 33060:127.0.0.1:3306 -p 22 name@example.com

-M monitor_port参数不可少,不然没效果,至于这个监听端口到底是干啥的,没太明白。。。

最后,嫌每次敲这么一坨参数烦躁的话,加个alias到~/.bash_profile:

alias ssh_mysql='autossh -M 12345 -f -N -L 33060:127.0.0.1:3306 -p 22 name@example.com'

发表评论

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

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据