Docker 容器中的 ssh 服务配置

在开发或生产环境中,我们常常需要在 Docker 容器中运行一些命令或服务,而其中有些服务需要访问容器内部,但它们并没有 UI 界面,这时候我们就需要在容器中启用 SSH 服务。本文将介绍如何在 Docker 容器中配置 SSH 服务,以及如何连接和管理它。

为什么需要在 Docker 容器中启用 SSH 服务

通常情况下,我们通过 docker exec 命令进入容器内部执行命令或运行服务。但是,有些服务需要 GUI 界面或需要在后台运行,这时候我们就无法再通过 docker exec 命令进行操作。这种情况下,我们可以在容器内部启用 SSH 服务,然后通过 SSH 连接到容器内部进行配置和操作。

在 Docker 容器中启用 SSH 服务

在启用 SSH 服务之前,需要注意以下几点:

  • 为了安全起见,我们应该避免在生产环境中使用默认的 SSH 端口 22。
  • 启用 SSH 服务后,必须确保容器内部的用户账号和密码设置正确,防止未经授权的访问。
  • SSH 连接时需要注意容器和主机之间的 IP 地址和网络配置,确保能够互相访问。

下面是在 Docker 容器中启用 SSH 服务的详细步骤:

  1. 安装 SSH 服务

在容器内部执行以下命令,安装 SSH 服务和相关的工具包:

  1. 修改 SSH 配置文件

编辑 SSH 配置文件 /etc/ssh/sshd_config,将 SSH 端口改为非默认端口,比如 2222,然后将以下两行注释去掉:

PermitEmptyPasswords 参数设为 no,以避免空密码登录。最后重新启动 SSH 服务:

  1. 配置账号和密码

添加一个新用户并设置密码:

  1. 开放端口

要么在容器运行时就将需要使用的端口绑定到 host 端口,比如:

或者在容器内部开放端口,允许从外部直接访问。比如下面的命令将开放 TCP 端口 2222:

连接和管理 Docker 容器

启用 SSH 后,我们就可以通过 SSH 客户端连接到 Docker 容器了。以下是连接到 Docker 容器的详细步骤:

  1. 获取容器的 IP 地址

运行以下命令获取容器的 IP 地址:

  1. 连接到容器

使用 SSH 客户端连接到容器的 IP 地址和开放的端口号,比如:

  1. 管理 Docker 容器

一旦连接到容器,我们就可以在容器内部进行管理和配置。比如,我们可以使用 Docker 命令操作容器,也可以使用工具包比如 vimtmux 等,在容器内部进行代码编辑和终端会话。

一个示例

下面是一个完整的 Dockerfile 来创建一个 SSH 服务的容器。它使用 Ubuntu 作为基础镜像,在容器中安装 SSH 服务和相关工具包,并配置一个新用户密码和 SSH 端口为 2222:

使用这个 Dockerfile,我们可以创建一个 SSH 服务的容器,连接到它并执行一些命令。比如:

总结

在 Docker 容器中启用 SSH 服务,可以方便地进行远程配置和管理工作,并提高生产环境的安全性。我们可以通过修改 SSH 配置文件、配置账号和密码,以及开放端口来启用 SSH 服务。然后,我们就可以使用 SSH 客户端连接到容器,进而在容器中进行开发和管理工作了。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/654864117d4982a6eb2a9ed2


纠错
反馈