我有以下设置:
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 地址,因此不允许访问。
我相信要使您的配置正常工作,您需要执行以下操作之一:
- 使用私有 IP 地址通过 SSH 连接到主机 A 或
- 将主机 B 的公网 IP 地址(或 NAT 网关 IP)添加到安全组源,代替(或补充)B 的安全组。
参考