ssh 连接到主机端口 22:连接被拒绝

The*_*hiv 2 ssh container docker 18.04

所以我有一个 docker 容器,我想用来自主机的 ssh 连接到它(我知道它没有指示 ssh 到 docker 容器,但我需要这样做)。

我在容器和主机上都安装了开放的 ssh 服务器,并且该服务正在两者上运行。我还检查了 docker 和 host 的端口,它们都是 22。我试图以root非特权用户的身份连接到它。我能做什么?

运行时ssh user@host -vvv我得到这个:

debug1: reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "host" port 22
debug2: ssh_connect_direct: needpriv 0
debug2: connecting to host [host] port 22
debug1: connect to address host port 22: connection refused
Run Code Online (Sandbox Code Playgroud)

A.S*_*Sha 5

默认情况下,docker 容器不公开任何端口。

要向主机公开端口,您需要添加选项:-p 22:22在开始运行容器时公开端口。

例子:

docker run -p 22:22 $CONTAINER_NAME

要在 Docker 中永久公开端口,您需要编辑Dockerfile容器的 并重建它。

Dockerfile添加行中。

EXPOSE 22

不建议将 ssh 端口暴露给在生产中运行的容器。

  • @A.Sha 由于有关“EXPOSE 22”的编辑,我必须指出该信息不正确。“EXPOSE”命令根本不执行任何操作。当用户使用容器时,它仅用于“文档”目的,以便他们知道需要使用“-p”公开特定端口。更多信息:https://docs.docker.com/engine/reference/builder/#expose。 (2认同)