所以我有一个 docker 容器,我想从主机使用 ssh 连接到它(我知道没有指示 ssh 到 docker 容器,但我需要这样做)。
我在容器和主机上都安装了 open ssh 服务器,并且服务在两者上运行。我还检查了 docker 和主机的端口,发现都是 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
答案1
默认情况下,docker 容器不暴露任何端口。
要向您的主机公开端口,您需要添加选项:-p 22:22
在开始运行容器时公开端口。
例子:
docker run -p 22:22 $CONTAINER_NAME
要永久公开 Docker 中的端口,您需要编辑Dockerfile
容器并重建它。
在Dockerfile
添加行中。
EXPOSE 22
不建议将 ssh 端口暴露给生产中运行的容器。