通过 SSH 隧道链接远程 MySQL

场景:

  • SSH 跳板机:10.0.0.1
  • MySQL 数据库:10.0.0.2:3306

MySQL 部署的机器不允许 SSH 连接,并且数据库端口只允许 localhost 或 10.0.0.1 这台跳板机访问,此时本机可以通过 ssh 连上跳板机,通过 ssh 建立的隧道端口转发连接上 MySQL 数据库。

1
2
3
4
5
6
7
8
9
10
11
# 本机连接跳板机
# 打开本机 13306 端口,代理到 ssh 跳板机,并且通过跳板机访问 10.0.0.2:3306
ssh -fCPN -L localhost:13306:10.0.0.2:3306 root@10.0.0.1
# 参数解释
# -C 使用压缩功能,是可选的,加快速度.
# -P 用一个非特权端口进行出去的连接.
# -f 一旦SSH完成认证并建立port forwarding,则转入后台运行.
# -N 不执行远程命令.该参数在只打开转发端口时很有用(V2版本SSH支持)

# 连接 MySQL
mysql -uusername -ppassword -hlocalhost -P13306

参考:

http://mingxinglai.com/cn/2015/09/connect-mysql-via-ssh-tunnel/