无法通过 SSH 连接到 VPC 中的 ec2 实例

无法通过 SSH 连接到 VPC 中的 ec2 实例

我刚刚开始使用 AWS,在 VPC 上运行 2 个 ec2 实例,一个具有公共和私有 IP,一个仅具有私有 IP。

如果我将外部 IP 附加到它们,我可以通过 SSH 连接到它们(使用我的密钥)。

我可以通过 SSH 从服务器 1 连接到服务器 2(如果我将 pem 密钥复制到服务器 1 上)

服务器 2 我只想要私有 IP,而服务器 1 有一个公共 IP 和 NAT 到服务器 2。我正在尝试按照教程这里aws 显示服务器 2 的私有地址为 10.0.0.18(服务器 1 为 10.0.0.63)

在服务器 1 上我添加了..

sudo iptables -t nat -A PREROUTING -p tcp --dport 10235 -j DNAT --to-destination 10.0.0.18:22

如果我看一下表格,我可以看到......

1    DNAT       tcp  --  anywhere             anywhere             tcp dpt:10235 to:10.0.0.18:22

如果我查看 iptables 的数据包……

iptables -L -v -t nat
Chain PREROUTING (policy ACCEPT 1 packets, 40 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   10   600 DNAT       tcp  --  any    any     anywhere             anywhere             tcp dpt:10235 to:10.0.0.18:22

我正在尝试连接...

ssh -i mykeyfile.pem -p 10235 user@<server1domain>

每次我尝试,我都能看到服务器 1 上的数据包增加,但我从未收到任何响应。我已在安全组上允许端口 10234&5 和 22。

安全组显示为..

  Custom TCP Rule TCP 10234 - 10240 0.0.0.0/0

ssh -vvv 没有提供任何有用的信息,因为它只是挂着说“连接到我的主机端口 10235”。

如上所述,如果我关联一个公共 IP 并连接到该 IP,一切就可以正常工作,但我似乎无法通过 NAT 使其工作?

答案1

如果您尝试从 VPC 外部连接到仅具有私有 IP 的实例,则此操作将失败。您需要将具有公共 IP 的实例设置为 VPN(尝试 OpenVPN AS),然后通过这种方式允许 ssh 访问。

如果您尝试从服务器 2(仅私有 IP)通过 SSH 连接到服务器 1(公共/私有),那么您可能还需要添加路由表或安全组,并确保 VPC 可以处理 NAT/PAT 流量:

NAT/PAT 脚本

并将其设置为运行(ubuntu):

sed -i '$ i '"/usr/local/sbin/configure-pat.sh"'' /etc/rc.local'

相关内容