如何搭建本地代理服务器通过SSH隧道连接AWS VPC内MySQL供Hibernate使用
实现本地代理访问VPC内MySQL的方案
没问题,我来帮你搞定这个需求!你要的就是通过SSH本地端口转发搭建一个「隐形代理」,完全不用修改微服务的核心配置逻辑,只需要把微服务的MySQL端点指向本地端口就行,具体步骤如下:
准备工作
你需要先确认这些基础条件和信息:
- 一台AWS VPC内的堡垒机(Bastion Host):这台EC2实例必须有公网IP,且能通过SSH登录;它的安全组要允许你的本地IP访问22端口(SSH),同时要允许访问目标MySQL实例的3306端口。
- MySQL实例的安全组:要允许堡垒机的私有IP访问3306端口(因为堡垒机和MySQL在同VPC内,用私有IP即可)。
- 本地有SSH客户端:Linux/macOS自带终端,Windows用PowerShell或者Putty都可以。
建立SSH隧道(核心步骤)
这一步就是把本地端口和VPC内的MySQL端口做绑定,相当于在本地和MySQL之间搭了一条加密通道,通过堡垒机中转。
方式1:Linux/macOS终端或Windows PowerShell
直接在终端里运行这条命令(替换成你的实际信息):
ssh -L 3306:your-mysql-rds-endpoint:3306 ec2-user@your-bastion-public-ip -i /path/to/your-aws-key-pair.pem
参数解释:
-L 3306:xxx:3306:把本地的3306端口,转发到your-mysql-rds-endpoint的3306端口ec2-user@your-bastion-public-ip:堡垒机的SSH登录用户名和公网IP-i /path/to/xxx.pem:你的AWS密钥对文件路径(如果堡垒机用密码登录可以去掉这个参数)
运行后保持终端窗口打开,关闭窗口隧道就会断开。
方式2:Windows Putty(图形界面)
如果你习惯用图形工具:
- 打开Putty,在「Session」面板输入堡垒机的公网IP,端口填22
- 左侧导航栏选「Connection → SSH → Tunnels」:
- 在「Source port」填3306
- 在「Destination」填
your-mysql-rds-endpoint:3306 - 选择「Local」,点击「Add」
- 回到「Session」面板,保存配置(方便下次快速使用),然后点击「Open」登录堡垒机
测试并配置微服务
- 先验证隧道是否正常:用本地MySQL客户端连接
localhost:3306,输入原来的MySQL用户名和密码,如果能成功连接,说明隧道通了。 - 配置RdsConnector:直接把微服务里的MySQL端点改成
localhost:3306,其他配置(用户名、密码、数据库名)完全和云端一致,不用做任何修改!
额外注意事项
- 如果本地3306端口被占用(比如本地装了MySQL),可以换个端口,比如3307:把命令里的
3306改成3307,然后微服务连接localhost:3307就行。 - 堡垒机的安全组一定要配置正确:允许你的本地IP访问22端口,同时允许访问MySQL的3306端口;MySQL的安全组要允许堡垒机的私有IP访问3306端口。
- 如果你想让隧道在后台静默运行,可以给SSH命令加
-fN参数:
要关闭后台隧道的话,用ssh -fN -L 3306:your-mysql-rds-endpoint:3306 ec2-user@your-bastion-public-ip -i /path/to/your-key-pair.pemlsof -i :3306找到进程ID,再用kill <PID>结束进程即可。
内容的提问来源于stack exchange,提问作者K. M
相关产品推荐
相关产品推荐

