Docker 容器中的 ssh 服务配置

阅读时长 5 分钟读完

在开发或生产环境中,我们常常需要在 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

纠错
反馈