【问题标题】:AWS VPC - Cannot SSH from Bastion Host in private subnet to EC2 instance in the same VPC in a different subnetAWS VPC - 无法从私有子网中的堡垒主机通过 SSH 连接到不同子网中同一 VPC 中的 EC2 实例
【发布时间】:2020-04-27 09:25:06
【问题描述】:

我希望有人可以帮助我解决以下问题。我试过四处寻找,但找不到解决问题的好方法。

我有 VPC 10.0.0.0/16

在 VPC 中,我将其划分为私​​有子网和公共子网。我每个 AZ 有 1 个私有子网和 1 个公共子网。

所以我的子网如下: AZ us-east-2a 10.0.1.0/24 - 私有 10.0.2.0/24 - 公开

AZ us-east-2b 10.0.3.0/24 - 私有 10.0.4.0/24 - 公开

AZ us-east-2c 10.0.5.0/24 - 私有 10.0.6.0/24 - 公开

所有这些都是为了冗余。但是现在我正在做一个测试,只是在 us-east-2a 中有一个堡垒,我希望它应该能够 ssh 到该 VPC 中的所有其他 ec2 实例,但是这并没有发生,这就是我面临的问题。

我的堡垒主机位于我创建的公共子网中的 us-east-2a 中。我可以从我的本地机器上成功地通过 ssh 进入。

如果我尝试通过 ssh 连接到与我的堡垒主机位于同一子网中的 ec2 实例,那么它可以工作,但对于不同子网中的任何其他主机,它就无法工作,即使这一切都在一个 VPC 中。

出于测试目的,我尝试从堡垒 ssh 进入的 ec2 实例的安全组是完全开放的(一旦我发现问题,我将锁定它):

基本上我允许来自世界上任何端口的所有 tcp 流量。

就我的 NACL 而言 - 我有一个用于公共网络的 NACL(并将我的公共子网与之关联)和一个用于我的私有网络的 NACL(并将我的私有子网与之关联)。

来自我的公共 nacl 的传出流量允许所有 tcp 流量 0 - 65535

此时的入站私有 NACL 允许所有流量和相同的出站。同样,我会加强这一点,但在解决这个问题时,我放宽了这些规则以确保那里没有问题。

我有一个公共和私有路由表分别附加到我的公共子网和私有子网。

公共路由表有一个目标路由 0.0.0.0/0 到我的 IG,它还有一个 10.0.0.0/16 本地路由,应该允许访问子网中的任何主机。

私有路由表有一个到本地接口的 10.0.0.0/16 路由和到 NAT 网关的所有其他流量 (0.0.0.0/0)。

It just hangs here and eventually there is a timeout.
[root@ip-10-0-2-177 ec2-user]# ssh ec2-user@10.0.1.242
ssh: connect to host 10.0.1.242 port 22: Connection timed out
[root@ip-10-0-2-177 ec2-user]# ssh -vvvv ec2-user@10.0.1.242
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 58: Applying options for *
debug2: resolving "10.0.1.242" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to 10.0.1.242 [10.0.1.242] port 22.
debug1: connect to address 10.0.1.242 port 22: Connection timed out
ssh: connect to host 10.0.1.242 port 22: Connection timed out

I can ping this server though:
[root@ip-10-0-2-177 ec2-user]# ping 10.0.1.242
PING 10.0.1.242 (10.0.1.242) 56(84) bytes of data.
64 bytes from 10.0.1.242: icmp_seq=1 ttl=255 time=0.403 ms
64 bytes from 10.0.1.242: icmp_seq=2 ttl=255 time=0.461 ms
64 bytes from 10.0.1.242: icmp_seq=3 ttl=255 time=0.479 ms
64 bytes from 10.0.1.242: icmp_seq=4 ttl=255 time=0.439 ms
^C
--- 10.0.1.242 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3061ms
rtt min/avg/max/mdev = 0.403/0.445/0.479/0.035 ms

任何帮助将不胜感激,因为我已经查看了我能想到的所有内容,但我不确定问题出在哪里。

【问题讨论】:

  • 我会将您的 NACL 更改恢复为默认值,并仔细检查您的私有 EC2 实例是否具有安全组入口规则,该规则允许 tcp/22 从堡垒所在的安全组入站。
  • 谢谢!看起来是我的公共网络 NACL 入站规则过于严格。

标签: amazon-web-services ssh routing amazon-vpc subnet


【解决方案1】:

您可以 ping 实例但不能 SSH 到该实例,这意味着您的路由表和常规网络设置正确。

剩下的:

  • 安全组
  • NACL

由于您的安全组是“完全开放的”,它不会区分流量类型(例如 SSH 与 Ping)。因此,这不太可能是问题。

一般来说,您应该保留 NACL 的默认值“全部允许”,除非您有非常特殊的需要(例如创建 DMZ)。

此外,NACL 仅适用于进出子网的流量。鉴于同一子网中的目标实例正常工作,但其他子网中的实例不工作,它再次指出您的 NACL 是问题的原因。

建议:将 NACL 恢复为正常的默认设置。

【讨论】:

  • 谢谢!你是对的,它是NACL。事实证明,我的公共子网 NACL 的入站规则是限制性的,因为它们不允许打开临时端口,所以似乎这导致了连接问题。
猜你喜欢
  • 2021-02-16
  • 1970-01-01
  • 1970-01-01
  • 2018-07-18
  • 2019-09-10
  • 2019-09-16
  • 1970-01-01
  • 2019-09-04
  • 2017-07-23
相关资源
最近更新 更多