所以我有一个 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
默认情况下,docker 容器不公开任何端口。
要向主机公开端口,您需要添加选项:
-p 22:22
在开始运行容器时公开端口。例子:
docker run -p 22:22 $CONTAINER_NAME
要在 Docker 中永久公开端口,您需要编辑
Dockerfile
容器并重建它。在
Dockerfile
添加行中。EXPOSE 22
不建议将 ssh 端口暴露给在生产中运行的容器。