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

Posted

技术标签:

【中文标题】从 MySQL 客户端通过 AWS 堡垒主机连接到 MySQL RDS 实例【英文标题】:Connecting to MySQL RDS instance through AWS bastion host from a MySQL client 【发布时间】:2017-11-21 10:52:52 【问题描述】:

我正在尝试从 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 堡垒主机时,是否可以通过 AWS 堡垒主机(机器 B)通过 SSH 连接到 RDS 实例,只需从机器 A 连接到机器 B?

即,在通过 SSH 从机器 A 连接到机器 B 时,机器 B 应自动 SSH 并连接到 MySQL RDS 实例(机器 C)。

【问题讨论】:

您检查过您的安全组吗?您需要确认连接到机器 C 的安全组允许从机器 B 访问 @Venkata.Mutyala 是的,机器 C 可以从机器 B 访问。但我的问题是,如何使用 ssh 密钥从 MySQL 客户端通过 AWS 堡垒主机连接到 RDS MySQL 看看这是否有帮助:rickchristianson.wordpress.com/2013/10/21/… 这取决于which MySQL 客户端工具。 Workbench(通常是可怕的软件)显然可以自己处理 SSH 隧道。其他客户端也可能具有本机支持。或者,您可以轻松地从命令行构建隧道。你的客户是什么?另请注意,机器 B 不会在任何地方“SSH”。 MySQL 客户端/服务器协议本身不使用 SSH,RDS 也不使用 SSH。从堡垒到 RDS,它只是 TCP,而不是 SSH。 想一想,我的最后两句话可能会清除您忽略的一些东西。您只需需要 ssh 到堡垒主机。隧道在你和它之间,它可以访问 RDS。 【参考方案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 中,我们无法在没有隧道的情况下访问 target_host

以上是关于从 MySQL 客户端通过 AWS 堡垒主机连接到 MySQL RDS 实例的主要内容,如果未能解决你的问题,请参考以下文章

使用 MySQL Workbench 通过 EC2 实例连接到 Amazon RDS 实例

堡垒主机连接到 rds 所需的忘记的密钥对

如何从 AWS SAM 本地 docker 实例连接到主机 MySQL?

如何使用代理跳转(堡垒主机)通过 ssh 隧道连接到 mongodb 服务器

MySQL Workbench 连接到 AWS,收到错误“无法连接到本地主机”

通过 EC2 连接到 AWS MySQL?