【问题标题】:AWS : SSH to private subnet EC2 instance from public subnet EC2 instance via NAT GATEWAY is not happeningAWS:通过 NAT GATEWAY 从公有子网 EC2 实例到私有子网 EC2 实例的 SSH 没有发生
【发布时间】:2018-08-10 08:33:22
【问题描述】:

我已经在 VPC 配置下进行了设置,但目前没有进行到实例的 SSH:

  • 创建了一个新的 VPC
  • 创建了公有和私有子网
  • 向公有子网启动了一个 ec2 实例,更新了 Internet 网关的路由表
  • 已将 ec2 实例启动到私有子网。
  • 将 natgateway 与 EIP 中的公共子网相关联
  • 使用 natgateway 为私有子网更新路由表

从公共实例到私有实例的 SSH 不会通过密钥对发生。 你能告诉我我在这里错过了什么吗?

【问题讨论】:

  • 你能提供你正在使用的 ssh 命令和详细的输出吗? (ssh -vvv)

标签: amazon-web-services amazon-ec2 nat aws-vpc


【解决方案1】:

我怀疑您缺少一个允许两个子网上的实例之间进行 SSH 通信的安全组。

AWS 默认是安全的 - 您需要明确允许流量、角色等。

因此,在这种情况下,最简单的做法是创建一个跨越 VPC 的 CIDR 块的安全组,并将其分配给两个实例。

编辑:我刚刚注意到您说您将 NAT 网关添加到 public 子网 - 我想您的意思是私有的。

This guide 涵盖了类似的场景 - 公共 Web 子网和私有 db 子网,并讨论了您需要的所有路由 + ACL。

另外,当您说没有使用密钥对进行 ssh 时 - 您是在完全连接,还是连接超时?

【讨论】:

  • 您好,谢谢,我重新配置了。
  • 您好,谢谢,我重新进行了配置,但即使在为 CIDR 块添加了具有 SSH、ICMP、HTTP 和 HTTPS 的安全组之后,我仍无法从 Internet 成功 ping 到私有实例面对实例。任何建议!
  • @narayanans 我已经用更多信息修改了我的答案。
【解决方案2】:

当涉及到一个 EC2 实例与 VPC 中的另一个 EC2 实例通信时,NAT 网关没有任何作用。

确保私有子网实例所属的安全组允许来自公有子网实例所属安全组的 SSH 协议。

此外,与私有子网关联的 NACL 应允许来自公有子网实例所属的 CIDR 块的入站和出站 SSH 流量。

【讨论】:

    【解决方案3】:

    第一件事:

    • 公有子网中的 NAT 网关允许私有子网中的实例通过 Internet 网关访问 Internet 以进行软件更新等。

    • NAT 网关在通过 SSH 连接到实例时不起任何作用。

    试试这个来测试:

    • 在您的 EC2 实例所在的公共和私有子网上附加默认 NACL(允许所有入站和出站)。
    • 为公共(比如说 Pub-SG)和私有子网 (Prv-SG) 创建 2 个安全组。
    • 在 Pub-SG 上允许来自任何地方/特定 ip 的 SSH。
    • 出于更好的安全原因,在 Prv-SG 上允许来自 Pub-SG 的 SSH 作为源。
    • 如果两个实例都使用相同的密钥对启动,则使用 SSH 代理转发您可以通过公共实例连接私有实例。

    【讨论】:

    • 如何为子网创建安全组?
    • 子网不使用安全组,它们使用“网络访问控制列表”(NACL)
    • 我认为当@jestadi 说创建安全组时,他的意思是公有子网中EC2 实例的SG 需要有一个规则来允许您通过SSH 进入该框。私有子网中 EC2 实例的 SG 必须具有允许 SG 以上 SSH 访问的规则。这个想法是让您通过 SSH 连接到公共子网中的 EC2 实例,然后通过该框,通过 SSH 连接到私有子网中的 EC2 实例。如果 PEM 密钥相同,您应该能够将密钥转发到私有子网 EC2 实例,从而获得无缝访问。
    猜你喜欢
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 2020-07-03
    • 2021-01-20
    • 2019-09-10
    • 2016-10-02
    相关资源
    最近更新 更多