
linuxkit/sshdLinuxKit sshd 镜像是基于 LinuxKit 项目中的 sshd 包构建的轻量级 SSH 服务器镜像。LinuxKit 是一个用于构建最小化、安全、容器化操作系统的工具包,该 sshd 镜像继承了 LinuxKit 的轻量特性,专注于提供基础且安全的 SSH 远程访问功能。
提供 SSH 协议支持,用于在容器化环境、嵌入式系统或边缘设备中实现安全的远程登录与管理。
docker run、docker-compose)。docker run 命令)通过 docker run 直接启动容器,支持通过环境变量配置核心参数:
bashdocker run -d \ --name linuxkit-sshd \ -p 2222:22 \ # 宿主机端口:容器内SSH端口(默认22) -e SSH_USER=admin \ # SSH登录用户名 -e SSH_PASSWORD=SecurePass123 \ # SSH登录密码(可选,建议优先使用密钥认证) -e SSH_PUBKEY="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..." \ # SSH公钥(可选,用于密钥认证) -e SSH_PORT=22 \ # 容器内SSH服务监听端口(默认22) linuxkit/sshd:latest
容器支持以下环境变量自定义配置:
| 环境变量 | 描述 | 默认值 | 是否必填 |
|---|---|---|---|
SSH_USER | SSH 登录用户名 | root | 否 |
SSH_PASSWORD | 用户名对应的密码(明文,不建议在生产环境使用,优先用 SSH_PUBKEY) | 无 | 否 |
SSH_PUBKEY | 用于密钥认证的公钥字符串(格式:ssh-<algorithm> <key> <comment>) | 无 | 否 |
SSH_PORT | 容器内 SSH 服务监听端口 | 22 | 否 |
ALLOW_TCP_FORWARDING | 是否允许 TCP 端口转发(yes/no) | no | 否 |
生产环境中建议使用 SSH 密钥认证,避免明文密码泄露风险:
生成本地 SSH 密钥对(若已存在可跳过):
bashssh-keygen -t ed25519 -f ~/.ssh/linuxkit_key -N ""
启动容器时挂载公钥文件或传入公钥环境变量:
bash# 方式1:通过环境变量传入公钥 docker run -d \ --name linuxkit-sshd \ -p 2222:22 \ -e SSH_USER=admin \ -e SSH_PUBKEY="$(cat ~/.ssh/linuxkit_key.pub)" \ # 读取本地公钥文件内容 linuxkit/sshd:latest # 方式2:挂载公钥文件到容器(推荐,支持动态更新公钥) docker run -d \ --name linuxkit-sshd \ -p 2222:22 \ -e SSH_USER=admin \ -v ~/.ssh/linuxkit_key.pub:/etc/ssh/authorized_keys:ro \ # 只读挂载公钥文件 linuxkit/sshd:latest
客户端通过密钥登录:
bashssh -i ~/.ssh/linuxkit_key admin@<宿主机IP> -p 2222
docker-compose 配置示例通过 docker-compose.yml 定义服务,便于管理多容器环境:
yamlversion: '3' services: sshd: image: linuxkit/sshd:latest container_name: linuxkit-sshd ports: - "2222:22" # 宿主机2222端口映射到容器22端口 environment: - SSH_USER=operator - SSH_PUBKEY=ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... # 替换为实际公钥 - SSH_PORT=22 - ALLOW_TCP_FORWARDING=yes restart: unless-stopped # 容器退出时自动重启(可选) # 可选:挂载自定义sshd配置文件(覆盖默认配置) # volumes: # - ./sshd_config:/etc/ssh/sshd_config:ro
启动服务:
bashdocker-compose up -d
sshd_config(高级配置)如需修改 SSH 服务核心配置(如禁用密码认证、限制登录IP等),可挂载自定义 sshd_config 文件:
本地创建 sshd_config 文件(示例配置):
iniPort 22 PermitRootLogin no # 禁止root登录 PasswordAuthentication no # 禁用密码认证(仅允许密钥) PubkeyAuthentication yes AuthorizedKeysFile /etc/ssh/authorized_keys AllowUsers operator # 仅允许operator用户登录 AllowTcpForwarding yes X11Forwarding no
启动容器时挂载配置文件:
bashdocker run -d \ --name linuxkit-sshd \ -p 2222:22 \ -e SSH_USER=operator \ -v ./sshd_config:/etc/ssh/sshd_config:ro \ # 挂载自定义配置 -v ~/.ssh/linuxkit_key.pub:/etc/ssh/authorized_keys:ro \ # 挂载公钥 linuxkit/sshd:latest
SSH_PASSWORD),优先采用密钥认证(SSH_PUBKEY),并限制 AllowUsers、AllowTcpForwarding 等权限。SSH_PORT)需与 -p 参数中的容器端口一致(如 SSH_PORT=2222 时,需映射 -p 2222:2222)。linuxkit/sshd:v0.8)而非 latest,避免版本更新导致配置兼容问题。docker logs linuxkit-sshd 查看 SSH 服务日志,排查登录失败等问题。





manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务