从 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 实例
如何从 AWS SAM 本地 docker 实例连接到主机 MySQL?
如何使用代理跳转(堡垒主机)通过 ssh 隧道连接到 mongodb 服务器