SSH 隧道到 RDS 实例

SSH 隧道到 RDS 实例

我有以下设置:一个在 2 个私有子网的子网组中运行的 RDS 实例;一个在公共子网中运行的 EC2 实例。因此,我想通过我的 EC2 实例连接到我的 RDS 实例。

我还希望能够从 shell 进行连接。因此我在本地计算机上运行以下命令:

ssh -L 3305:mydb.myrdsinstance.eu-west-1.rds.amazonaws.com:3306 ec2-user@myec2instance

因此我登录了我的 ec2 实例并尝试使用以下命令访问数据库:

mysql -h localhost -u mydbuser -p

输入正确的主密码,得到:

错误 1045(28000):拒绝用户“mydbuser”@“localhost”访问(使用密码:是)

我也尝试从我的 ec2 实例建立隧道(通过从中运行 SSH 命令),这也会创建连接,但我无法像上面一样访问数据库。

我尝试使用 -N 选项运行 ssh 命令,这会出现闪烁的光标,但什么也没有发生。

我的本地计算机上的防火墙已被禁用,所有流量都允许通过 EC2 和 RDS 实例。

我还尝试与 Workbench 建立连接,但出现了奇怪的情况。当我连接并输入主密码时,系统显示“无法连接到 127.0.0.1 (111) 上的 MySQL 服务器”。但如果我选中“将密码保存在钥匙串中”,下次连接时就会正常,不会发生任何变化。

我该如何修复这个问题并通过带有 shell 的 SSH 隧道连接到 RDS 实例?

答案1

ssh -L 3305:mydb.myrdsinstance.eu-west-1.rds.amazonaws.com:3306 ec2-user@myec2instance

您需要转发端口3306而不是端口3305

相关内容