您的位置:首页 > 数据库 > MySQL

利用SSH隧道方式连接远程MySQL

2011-05-14 18:40 337 查看
利用SSH隧道方式连接远程MySQL服务器 ssl 安全备份

利用SSH隧道方式连接远程MySQL服务器

2009/11/03 于 16:23Cooper抢沙发

1、简介:

大多数人知道SSH是用来替代R命令集,用于加密的远程登录,文件传输,甚至加密的FTP(SSH2内置),因此SSH成为使用极广的服务之一,不仅如此,SSH还有另一项非常有用的功能,就是它的端口转发隧道功能,利用此功能,让一些不安全的服务象TCP、POP3、SMTP、FTP,LDAP等等通过SSH的加密隧道传输,然后,既然这些服务本身是不安全的,密码和内容是明文传送的,通过使用SSH隧道传输的话再想在其中间监听也是徒劳无功的了。本文主要介绍通过SSH隧道连接远程Mysql服务器,SSH隧道更详细的文章参见:官方关于SSH隧道的介绍文章

2、使用Windows客户端连接
下面介绍使用windows系统下比较流行的MySQL终端工具SQLyog Enterprise,通过SSH隧道连接Mysql服务器。如下图:

新建连接

MySQL标签页

SSH标签页
3、linux命令行下使用ssh命令建立SSH隧道
mysql服务器地址为:192.168.99.52

本机地址为:192.168.99.91
前提

将本机的ssh public key复制到mysql服务器中,也就是将本机的id_rsa.pub内容添加到mysql服务器的~/.ssh/authorized_keys文件中。我这里用命令实现。
利用 ssh-keygen 命令 生成本机id_rsa.pub文件

# ssh-keygen 连续回车生成id_rsa.pub 文件
将id_rsa.pub文件复制到mysql服务器中

# ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.99.52
开始挖隧道

利用ssh命令在本机开个3388的端口,这个端口为隧道的入口端口,也就是说我一会儿通过在本机连接这个端口来达到连接mysql服务器3306端口的目的。使用命令如下:
ssh -NCPf root@192.168.99.52 -L 3388:192.168.99.52:3306
参数解释
-C 使用压缩功能,是可选的,加快速度。

-P 用一个非特权端口进行出去的连接。

-f 一旦SSH完成认证并建立port forwarding,则转入后台运行。

-N 不执行远程命令。该参数在只打开转发端口时很有用(V2版本SSH支持)
这里的root@192.168.99.52 是登陆mysql服务器的SSH用户名和IP地址-L 3388:192.168.99.52:3306 这个参数的意思是说在本机开放3388端口到192.168.99.52:3306端口的映射,也就是说隧道的入口为3388出口为mysql服务器的3306

执行完后查看本地连接情况

# netstat -tulnp | grep 3388

tcp 0 0 127.0.0.1:3388 0.0.0.0:* LISTEN 14273/ssh

tcp 0 0 ::1:3388 :::* LISTEN 14273/ssh
查看本机与mysql服务器的ssh连接情况

# netstat -an | grep 192.168.99.52

tcp 0 0 192.168.99.91:7612 192.168.99.52:9698 ESTABLISHED
通过这两条命令可知,执行完命令之后,本机与mysql服务器就建立起了ssh连接,且开放了3388端口。
通过隧道连接MySQL服务器
# mysql -u dbname -P 3388 -h 127.0.0.1 -pdbpwd

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 52562

Server version: 5.1.31-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
dbname@192.168.99.52 [(none)] >show databases;

连接成功!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MySQL 数据库 远程