【发布时间】:2020-04-26 14:54:29
【问题描述】:
这是我的设置:
- 我在 us-east-1a 中有 3 个实例
- instanceA 位于具有公共 IP 的公共子网中
- instanceB 位于没有公共 IP 的私有子网中
- instanceC 位于具有公共 IP 的公共子网中
- 我将 instanceC 放在 NLB 后面。 NLB 位于公共子网 us-east-1a 和 us-east-1b
- instanceC 的安全组是:
- 允许来自 instanceA 的公共 IP 的 SSH
- 允许来自 instanceB 的私有 IP 的 SSH
我可以直接从 instanceA 和 B SSH 到 instanceC,没有任何问题。 但是每当我 ssh 到 NLB 的 DNS 时,我只能从 instanceA 连接。 每当我从 instanceB SSH 到 NLB 时,就会出现连接超时。
我检查了 NLB 的网络接口,发现每个 NLB 的可用区都有一对公共和私有 IP。
从 instanceA,我可以 ssh 到 NLB 的公共 IP 地址,但我不能 ssh 到 NLB 的 privateIP。 从 instanceB,我可以 ssh 到 NLB 的私有 IP 地址,但我不能 ssh 到 NLB 的公共 IP
现在,我尝试 ssh -vvv NLB,我可以看到我正在尝试连接到 NLB 的公共 IP。这可能是我无法从 instanceB 连接到 NLB 的原因,因为正如我上面所说,instanceB 只能连接到 NLB 的私有 IP。
我尝试修改 InstanceC 的 sg 并允许 ssh 从 0.0.0.0/0 并且我可以成功地从 instanceB 访问 NLB。但这不是我想要的。我不想让每个人都通过 NLB 访问 instanceC。
我希望instanceB 也能够像instanceA 一样通过NLB ssh 到instanceC。我怎样才能做到这一点? sg、nlb、az等需要修改什么?
谢谢!
【问题讨论】:
-
“ssh 到 NLB 的 DNS”是什么意思?您不应该通过负载均衡器使用 SSH,因为流量可以在多个实例之间拆分。
标签: amazon-web-services amazon-ec2 ssh nlb