如何为 Docker 容器配置 SSH 访问

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Docker 已成为用于构建、部署和管理容器化应用程序的流行平台。然而,有时你可能需要远程访问你的 Docker 容器,这就是 SSH(安全外壳协议)访问发挥作用的地方。在本教程中,我们将指导你完成配置 Docker 容器 SSH 访问的过程,使你能够安全地连接和管理容器化应用程序。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/attach("Attach to Container") docker/ContainerOperationsGroup -.-> docker/exec("Execute Command in Container") docker/ContainerOperationsGroup -.-> docker/logs("View Container Logs") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") subgraph Lab Skills docker/attach -.-> lab-411518{{"如何为 Docker 容器配置 SSH 访问"}} docker/exec -.-> lab-411518{{"如何为 Docker 容器配置 SSH 访问"}} docker/logs -.-> lab-411518{{"如何为 Docker 容器配置 SSH 访问"}} docker/version -.-> lab-411518{{"如何为 Docker 容器配置 SSH 访问"}} end

Docker 的 SSH 访问简介

Docker 是一个流行的容器化平台,它允许开发者在一个一致且隔离的环境中打包和部署应用程序。虽然 Docker 容器被设计为自包含且短暂存在的,但在某些情况下,你可能需要访问容器的 shell 或排查容器内的问题。这就是 SSH(安全外壳协议)访问能发挥作用的地方。

SSH 是一种安全协议,它允许你连接到远程系统并执行命令、传输文件以及执行各种管理任务。通过在 Docker 容器中启用 SSH 访问,你可以直接访问容器的 shell,这对于调试、监控或执行高级配置任务很有帮助。

在本教程中,我们将探讨为 Docker 容器配置 SSH 访问的步骤,使你能够安全且高效地连接到它们。

graph TD A[Docker 主机] -- SSH 连接 --> B[Docker 容器] B[Docker 容器] -- SSH 访问 --> C[容器 shell]

表 1:在 Docker 容器中启用 SSH 访问的好处

好处 描述
远程访问 允许你远程访问容器的 shell,从而能够进行故障排查和高级配置任务。
调试 通过直接访问容器环境,便于排查容器内的问题。
监控 能够监控和管理容器的进程及资源。
高级配置 使你能够执行一些通过容器默认接口可能无法完成的高级配置任务。

在 Docker 容器中启用 SSH 访问

要在你的 Docker 容器中启用 SSH 访问,你可以遵循以下步骤:

在容器中安装 SSH 服务器

首先,你需要在容器内安装一个 SSH 服务器。在本示例中,我们将使用 OpenSSH 服务器,它是 SSH 协议广泛使用且安全的实现。

## 更新软件包索引
apt-get update

## 安装 OpenSSH 服务器
apt-get install -y openssh-server

配置 SSH 服务器

接下来,你需要配置 SSH 服务器以允许远程访问。你可以通过修改 SSH 服务器配置文件来做到这一点,该文件通常位于 /etc/ssh/sshd_config

## 打开 SSH 服务器配置文件
nano /etc/ssh/sshd_config

## 修改以下设置:
PermitRootLogin yes
PasswordAuthentication yes

这些设置允许 root 登录和基于密码的认证,这对于测试目的很方便。在生产环境中,为了提高安全性,你应该考虑使用基于密钥的认证。

启动 SSH 服务器

配置完 SSH 服务器后,你需要启动该服务。

## 启动 SSH 服务器
service ssh start

现在,你的 Docker 容器已准备好接受 SSH 连接。

graph TD A[Docker 主机] -- SSH 连接 --> B[Docker 容器] B[Docker 容器] -- SSH 服务器 --> C[容器 shell]

表 2:SSH 服务器配置选项

选项 描述
PermitRootLogin 允许或禁止通过 SSH 进行 root 登录。测试时设置为 yes,但在生产环境中使用 no
PasswordAuthentication 启用或禁用基于密码的认证。测试时设置为 yes,但在生产环境中使用基于密钥的认证。
PubkeyAuthentication 启用或禁用基于公钥的认证。在生产环境中用于安全访问。

通过 SSH 连接到 Docker 容器

既然你已经在 Docker 容器中启用了 SSH 访问,那么你就可以使用 SSH 协议连接到它们。

获取容器的 IP 地址

要通过 SSH 连接到 Docker 容器,你首先需要获取容器的 IP 地址。你可以通过运行以下命令来做到这一点:

## 获取 Docker 容器的 IP 地址

<容器名称> 替换为你的 Docker 容器的名称或 ID。

通过 SSH 连接到容器

一旦你获得了容器的 IP 地址,就可以使用 ssh 命令连接到该容器。

## 通过 SSH 连接到 Docker 容器

<容器 IP 地址> 替换为你在上一步中获得的 IP 地址。

如果你已将 SSH 服务器配置为使用基于密码的认证,系统将提示你输入 root 密码。如果你设置了基于密钥的认证,则需要提供相应的私钥。

graph TD A[Docker 主机] -- SSH 连接 --> B[Docker 容器] B[Docker 容器] -- SSH 访问 --> C[容器 shell]

表 3:SSH 连接命令

| 命令 | 描述 |
| -------------------------- | ------------------------------------------- | ---------------------------- |
| docker inspect <容器名称> | grep IPAddress | 获取 Docker 容器的 IP 地址。 |
| ssh root@<容器 IP 地址> | 使用 root 用户通过 SSH 连接到 Docker 容器。 |

通过遵循这些步骤,你现在可以使用 SSH 安全地访问 Docker 容器的 shell,从而能够执行各种管理任务、排查问题并更有效地管理你的容器化应用程序。

总结

在本教程结束时,你将学会如何在 Docker 容器中启用 SSH 访问,以及如何使用 SSH 连接到这些容器。这些知识将使你能够更高效地管理基于 Docker 的应用程序,确保对容器化环境进行安全的远程访问和控制。