尝试 SSH 时连接被拒绝。但端口 22 未被阻止。Ping 工作正常。我正在运行 CentOS 7 VM 和开源 Docker。我想从其他 VM 或其他 Docker 容器通过 SSH 连接到 Docker 容器。我该怎么做?
我可以从 Docker 容器通过 SSH 连接到其共享主机 VM。我无法从主机 VM 通过 SSH 连接到 Docker 容器,因为出现错误“连接被拒绝”。我无法从容器本身通过 SSH 连接到 Docker 容器,因为“连接被拒绝”。nmap 结果显示,端口 1 到 1000 已关闭,但未在每个容器上进行过滤。我针对 docker inspect 命令结果中的 IP 地址进行了测试。
我可以使用 Docker 容器的 IP 地址来 ping 彼此。容器之间的 sftp 因“连接被拒绝”而失败。鉴于端口 22 上没有防火墙规则,是什么导致了这个“连接被拒绝”问题?
如果您不熟悉 Docker,鉴于 nmap 排除了端口阻塞,您能否为我提供可能的根本原因?Ping 有效。Docker 容器的功能与 Linux 服务器非常相似。
答案1
由于nmap
端口 1 到 1000 已关闭(特别是端口 22 已关闭),您可能无法sshd
在容器内运行。一些选项:
- 修改你的
Dockerfile
就sshd
可以开始了。 - 进入你的容器(例如
docker exec -it <container-id> /bin/bash
)并sshd
自行启动。
如果您确实只是希望sshd
能够在容器内获取 shell,docker exec
那么上述命令可能就是您真正需要的。
答案2
最可能的解释是 docker 容器没有运行 sshd。您可以像这样在正在运行的容器中获取 shell(这可能会解决您试图解决的真正问题):
docker exec -it bash