从MySQL客户端通过AWS堡垒主机连接到MySQL RDS实例

3

我正在尝试从MySQL客户端工具连接到RDS实例。但我发现的问题是它只能通过SSH连接到一台机器(AWS堡垒机)。那么我该如何通过AWS堡垒机内部连接到RDS实例呢?

Consider the machines A, B and C where, 
A-> local machine
B-> AWS ec2-instance
C-> RDS instance

将机器B作为AWS堡垒主机后,是否可以通过从机器A连接到机器B来连接到RDS实例的SSH呢?

也就是说,当从机器A通过SSH连接到机器B时,机器B应自动通过SSH连接到MySQL RDS实例(机器C)。


1
你检查过安全组了吗?你需要确认机器C所附加的安全组允许来自机器B的访问。 - Venkata.Mutyala
1
@Venkata.Mutyala 是的,机器C可以从机器B访问。但我的问题是,我如何使用ssh密钥通过AWS堡垒主机连接到RDS MySQL,从而连接MySQL客户端。 - Mathew
看看这个是否有帮助:https://rickchristianson.wordpress.com/2013/10/21/connecting-to-amazon-rds/amp/ - Venkata.Mutyala
这取决于使用哪个 MySQL 客户端工具。Workbench(一般来说是可怕的软件)可以自行处理 SSH 隧道。其他客户端也可能具有原生支持。或者您可以轻松地从命令行构建隧道。你用的是什么客户端?还请注意,机器 B 不会“ssh”到任何地方。MySQL 客户端/服务器协议本身不使用 SSH,RDS 也不使用 SSH。从堡垒到 RDS,只是 TCP,而不是 SSH。 - Michael - sqlbot
想一想,我的最后两句话可能会澄清你忽略的一些事情。你只需要ssh到堡垒机。隧道是在你和它之间建立的,并且它可以访问RDS。 - Michael - sqlbot
1个回答

1

如之前所建议的,您需要通过ssh隧道进行连接。

您可以使用mysql客户端或从控制台执行:

ssh user@example.com -L 3307:{target_host}:3306 -N

注意:3306端口是您为连接mysql客户端设置隧道的端口,您将再次使用它运行客户端。
然后只需从隧道中再次运行mysql客户端即可:
mysql --host={target_host} --port=3306 -u user -p

在我看来,这个不起作用。在机器A上,如果没有隧道,我们无法访问目标主机。 - ch271828n

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接