SSH隧道到RDS实例

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

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

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

因此,我login了我的ec2实例,试图访问数据库:

 mysql -h localhost -u mydbuser -p 

input正确的主密码,得到:

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

我也尝试从我的ec2实例(通过运行SSH命令从它)隧道,这也创build连接,但我不能像上面那样访问数据库。

我试着用-N选项运行ssh命令,这会给出一个闪烁的光标,什么都不会发生。

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

我也试图build立与Workbench的连接,有一个奇怪的事情正在进行。 当我连接并input主密码时,我得到“无法连接到127.0.0.1(111)上的MySQL服务器”。 但是,如果我选中“在密钥链中保存密码”,下次连接正常,没有任何改变。

我该如何解决这个问题,并通过shell与SSH隧道连接到RDS实例?

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

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