AWS EC2:SSH 安全组入站规则不起作用

AWS EC2:SSH 安全组入站规则不起作用

我有以下设置:

Instance A:
security group sgA
sgA inbound rules contains:
  Rule1: * All traffic - All protocols - All port ranges - Source: sgB
  Rule2: * SSH - TCP - port 22 - Source: 0.0.0.0/0

Instance B:
security group sgB

两个安全组均在 0.0.0.0/0 上启用了“所有流量”以进行出站连接。

通过此设置,我可以从实例 B ssh 到实例 A。但是,如果我删除规则 2(0.0.0.0/0 规则),ssh 现在会挂起,并且机器不会响应 ping。

我是否误解了 ssh 访问应如何基于安全组进行工作?

答案1

当您将安全组指定为规则的源或目标时,该规则将影响与该安全组关联的所有实例。传入流量将根据与源安全组关联的实例的私有 IP 地址(而非公有 IP 或弹性 IP 地址)进行允许。

在您的示例中,主机 A 将允许主机 B 从主机 B 的私有 IP 地址访问端口 22。如果您在尝试从 B 进行 SSH 时使用主机 A 的公共 IP 地址,则主机 B 将使用 NAT 网关 IP 或其公共 IP。由于这些 IP 不是私有 IP 地址,因此不允许访问。

我相信要使您的配置正常工作,您需要执行以下操作之一:

  1. 使用私有 IP 地址通过 SSH 连接到主机 A 或
  2. 将主机 B 的公网 IP 地址(或 NAT 网关 IP)添加到安全组源,代替(或补充)B 的安全组。

参考

EC2 安全组

答案2

要建立 SSH 连接,实例的安全组中必须存在以下内容。

SSH ec2 实例的安全组

规则 规则 1:所有流量 - 所有协议 - 所有端口范围包括上述 ssh 连接。

不要与开放所有端口的规则混淆。

在所有子网的两个安全组上仅打开 SSH 端口

如果你发现任何其他问题,请与我联系

相关内容