【问题标题】:How to Connect to Aurora serverless MySQL instance over SSH如何通过 SSH 连接到 Aurora 无服务器 MySQL 实例
【发布时间】:2020-01-23 05:05:19
【问题描述】:

我无法通过 EC2 隧道找到 Aurora MySql Db。

我们有一个 Aurora 无服务器数据库 (MySql)。问题是我不知道如何从我的机器本地连接到数据库。

我尝试将 SSH 选项添加到 mysqlstring builder 中,例如:

        MySqlConnectionStringBuilder _connectionBuilder = new MySqlConnectionStringBuilder()
        {
            UserID = "admin",
            Server = "RDS endpoint in Aws",
            Port = 3306,
            SshHostName = "Ip to the Ec2",
            SshUserName = "the ec2 user",
            SshPort = 22,
            SshKeyFile = @"filepath to local .pem file",
            Database = "db name",
            Password = "db-password"
        };

我尝试同时使用字符串生成器和 sshclient,例如:

 using (var sshClient = new SshClient(_connectionBuilder.SshHostName, 22, _connectionBuilder.SshUserName, new PrivateKeyFile(_connectionBuilder.SshKeyFile)))
            {

                sshClient.Connect();
                // SQL QUERY HERE
                sshClient.Disconnect();
            }

代码在发布到 lambda 实例但不在我的本地机器上时可以工作并连接。

如果我打开一个 CMD 窗口并输入:

ssh -N -L 3306:{aws Db endpoint}:3306 -i {path to .pem} {user}@{ip}

并将服务器更改为 localhost。

【问题讨论】:

  • 你能从本地机器通过SSH正常访问机器吗?
  • 是的,通过在命令窗口中使用 ssh 命令创建隧道来解决它。知道这是否可以在代码中实现吗?

标签: c# amazon-web-services .net-core amazon-rds amazon-aurora


【解决方案1】:

您可以为此使用SSH.NET。您可以找到一个工作示例here in the edited question

【讨论】:

  • 无法从本地计算机访问 Aurora 无服务器。
  • Laimonas 我可以使用 ec2 实例通过 ssh 隧道从本地计算机访问它
  • @MarcusLagerstedt 您是否尝试过创建一个 ForwardedPortDynamic 对象并将其添加到客户端,如答案中提供的示例所示?
【解决方案2】:

您的数据库可能无法公开访问。

PubliclyAccessible 指示数据库实例是否为 面向互联网的实例。如果您指定 true,AWS CloudFormation 使用可公开解析的 DNS 名称创建一个实例,该名称 解析为公共 IP 地址。如果您指定 false,AWS CloudFormation 创建一个具有 DNS 名称的内部实例 解析为私有 IP 地址。

创建数据库时,请确保将其设置为可公开访问,并且位于连接了 Internet 网关的子网中。

还要确保数据库的安全组允许连接到您的 SSH 端口 (22) 和 DB tcp 端口 (3306)。

编辑

您不能在 VPC 之外访问 Aurora 服务器:

您不能为 Aurora Serverless 数据库集群提供公共 IP 地址。您只能从基于 Amazon VPC 服务的虚拟私有云 (VPC) 中访问 Aurora Serverless 数据库集群。

【讨论】:

  • 啊哈,所以我要在我的 aws 实例之外访问它,我需要将数据库设置为公共可访问?我认为这会使数据库不安全。但是对于发展来说可能还可以吗?将尝试更改此设置
  • 我似乎无法为 Aurora Serverless 数据库集群找到此设置。
  • 我已阅读有关 AWS Aurora serverless 的文档。它说明了什么 - 请参阅我的原始答案 - 我已对其进行了编辑。
  • 没有,但它可以通过 ssh 隧道工作。使用mysql工作台没问题。
猜你喜欢
  • 2013-04-09
  • 2021-09-25
  • 1970-01-01
  • 2018-08-21
  • 2019-01-13
  • 2010-10-02
  • 2020-09-30
  • 2023-03-08
相关资源
最近更新 更多