Springboot 无侵入式连接阿里云内网RDS方法

802 阅读2分钟

一般来讲,内网的RDS都是不希望外网连接的,比如生产环境。所以这种作死小技巧一般不要轻易使用哦。

想要直接访问阿里云内网RDS,那么一台跳板机是绕不开的,所以前提是你得有一台与目标RDS处于同一内网的ECS。

数据库可视化工具连接

可视化工具是可以直接配置跳板机的,配置方法大同小异。

DataGrip

Navicat

Springboot本地环境连接

1、配置SSH免密登录跳板机

本地运行

ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key: [输入自定义文件名,直接回车默认为id_rsa]
后续一路回车默认就行

为了方便演示,定义文件名为mykey,文件生成路径为当前用户家目录/.ssh/

增加秘钥至 ssh-agent 的高速缓存

ssh-add -K ~/.ssh/mykey

将公钥文件mykey.pub上传至跳板机,路径随意。此举主要是为了方便将公钥内容追加至指定文件,防止手动复制出错。

在跳板机服务器上运行以下命令,将公钥内容追加至authorized_keys

cat mykey.pub >> ~/.ssh/authorized_keys

为该文件修改权限为600

chmod 600 ~/.ssh/authorized_keys

测试连通性,本地运行命令

ssh [your/username]@[your/server/ip]

能正常联通,说明配置成功。

2、打开代理通道

ssh -L [local/port]:[database/host]:[database/port] -i [rsa/dir] [proxy/server/user]@[proxy/server/host] -p [proxy/server/port]

举例说明:

ssh -L 1921:pgm-xxx.pg.rds.aliyuncs.com:1921 -i /Users/ant/.ssh/mykey root@47.100.22.222 -p 22
  • 第一个1921:本地端口,可自定义
  • pgm-xxx.pg.rds.aliyuncs.com:需要连接的内网RDS地址,从阿里云RDS控制台获取
  • 第二个1921:RDS服务的端口
  • /Users/ant/.ssh/mykey:在第一步免密登录中生成的私钥
  • root@47.100.22.222:免密登录跳板机的用户名,跳板机地址
  • 22:端口

运行后若命令行登录至跳板机,则说明通道打开成功。

3、本地连接

127.0.0.1:1921下的流量会被直接转发至内网RDS上,所以使用127.0.0.1即可连接。