无法使用私有 IP ssh 进入远程 EC2 实例内的 Docker 容器

无法使用私有 IP ssh 进入远程 EC2 实例内的 Docker 容器

我在同一个私有子网内创建了两个 EC2 实例(我们将它们称为客户端和远程主机),并且在远程主机内启动了一个 Docker 容器。

docker 容器本身是docker网络的一部分,其IP为“192.168.125.2”。

我在这个容器内启动了一个sshd服务器,并将22号端口映射到2201,分别在容器内部和外部。

这是我的问题:如果我尝试从客户端主机使用我的公共 IP 访问 docker 容器内部的 ssh,如下所示:

ssh -p 2201 username@PUBLIC_IP

然后,尽管需要很长时间,我还是可以通过 ssh 进入远程主机中的容器。

但是,如果我尝试使用私有 IP 从客户端主机 ssh 连接容器

 ssh -p 2201 username@PUBLIC_IP

我收到超时错误,无法访问 docker 容器。

我应该补充一点,如果我尝试从本地主机 ssh 远程主机(不访问 docker 容器),如下所示:

 ssh -p 22 username@PRIVATE_IP

然后我就可以毫无问题地进行 ssh 了。

这里可能存在什么问题?如何使用私有 IP 地址从客户端 ssh 到远程主机中的容器?

我已经添加了入站规则以允许来自任何来源的端口 2201 和 2202 的流量,禁用源/目标 IP 检查,但仍然没有效果。

谢谢。

更新 1:

以下是docker port <container_name>

5672/tcp -> 0.0.0.0:5672
7777/tcp -> 0.0.0.0:7777
22/tcp -> 0.0.0.0:2201

答案1

我建议首先在安全组中启用 icmp 流量,然后尝试从客户端 ping 到远程 IP 地址。大多数情况下它不起作用,现在在 ICMP 规则中添加源 IP 作为“<>”的名称。这将启用属于该安全组的 EC2 之间的访问。如果有效,则同样在 2201 规则和 22 规则中添加源 IP 作为“<>”的名称。然后尝试 ssh 看看它是否有效

相关内容