testcontainers/sshdsshd-docker 是一个预装 SSH 守护进程(sshd)的 Docker 镜像,旨在为容器提供 SSH 服务能力,支持通过 SSH 协议远程连接容器内部。该镜像通常基于轻量级 Linux 发行版(如 Alpine、Ubuntu 等,具体取决于镜像版本)构建,核心目标是简化容器的远程访问与管理流程,适用于需要通过 SSH 协议与容器交互的场景。
docker run 命令)通过 docker run 快速启动容器并暴露 SSH 服务:
bash# 基础示例:使用密码认证,映射主机端口 2222 到容器 SSH 端口 22 docker run -d \ --name sshd-container \ -p 2222:22 \ -e ROOT_PASSWORD=your_secure_password \ sshd-docker # 密钥认证示例:添加本地公钥到容器,禁用密码认证 docker run -d \ --name sshd-container \ -p 2222:22 \ -e AUTHORIZED_KEYS="$(cat ~/.ssh/id_rsa.pub)" \ -e DISABLE_PASSWORD_AUTH=true \ sshd-docker
创建 docker-compose.yml 文件,定义服务并持久化配置:
yamlversion: '3' services: sshd: image: sshd-docker container_name: sshd-service ports: - "2222:22" # 主机端口 2222 映射到容器 SSH 端口 22 environment: - ROOT_PASSWORD=your_secure_password # 可选:设置 root 密码(若使用密码认证) - AUTHORIZED_KEYS=ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... # 可选:添加授权公钥(多个公钥用换行分隔) - SSH_PORT=22 # 可选:自定义容器内 SSH 服务端口(默认 22) volumes: - ./ssh-config:/etc/ssh # 可选:挂载本地 SSH 配置目录(覆盖容器默认配置) - ./data:/root/data # 可选:挂载数据卷,持久化容器内数据 restart: unless-stopped
启动服务:
bashdocker-compose up -d
| 环境变量名 | 描述 | 默认值 | 示例 |
|---|---|---|---|
ROOT_PASSWORD | 设置 root 用户密码(用于密码认证,若同时配置 AUTHORIZED_KEYS,密码认证仍可用) | 无 | ROOT_PASSWORD=SecurePass123! |
AUTHORIZED_KEYS | 添加 SSH 公钥到 ~/.ssh/authorized_keys(用于密钥认证,支持多个公钥,用换行分隔) | 无 | AUTHORIZED_KEYS="ssh-rsa AAA...\nssh-rsa BBB..." |
DISABLE_PASSWORD_AUTH | 是否禁用密码认证(true 或 false,推荐启用密钥认证时设为 true) | false | DISABLE_PASSWORD_AUTH=true |
SSH_PORT | 自定义容器内 SSH 服务监听端口(需同步调整端口映射) | 22 | SSH_PORT=2222 |
容器内 SSH 服务默认监听 22 端口,需通过 -p 参数映射到主机端口(如 -p 2222:22,表示主机端口 2222 对应容器端口 22)。若自定义 SSH_PORT,需同步调整映射(如 SSH_PORT=2222 时,映射 -p 2223:2222)。
sshd_config 文件到容器 /etc/ssh/sshd_config,自定义 SSH 服务配置(如禁用 root 登录、限制 IP 访问等)。bashdocker run -d \ -p 2222:22 \ -v ./sshd_config:/etc/ssh/sshd_config \ sshd-docker
~/.ssh/authorized_keys,避免通过环境变量传递长字符串(适用于公钥较多的场景)。bashdocker run -d \ -p 2222:22 \ -v ~/.ssh/id_rsa.pub:/root/.ssh/authorized_keys:ro \ sshd-docker
启动容器后,通过以下命令远程连接:
bash# 密码认证(需设置 ROOT_PASSWORD) ssh root@localhost -p 2222 # 密钥认证(需配置 AUTHORIZED_KEYS 或挂载公钥) ssh -i ~/.ssh/id_rsa root@localhost -p 2222
若需深度自定义 SSH 服务(如修改默认端口、禁用 root 登录、限制用户等),可通过挂载 sshd_config 文件实现。示例自定义配置(sshd_config):
confPort 2222 # 自定义端口 PermitRootLogin no # 禁用 root 直接登录 AllowUsers appuser # 仅允许 appuser 用户登录 PasswordAuthentication no # 禁用密码认证 PubkeyAuthentication yes # 启用密钥认证
启动容器时挂载该文件:
bashdocker run -d \ -p 2222:2222 \ # 端口映射需与自定义 Port 一致 -v ./sshd_config:/etc/ssh/sshd_config \ sshd-docker
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务