本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

SFTP 镜像是一个基于 OpenSSH 的轻量级、易用的 SSH 文件传输协议(SFTP)服务器。它提供安全的文件传输能力,支持多种用户配置方式和灵活的卷挂载,适用于个人、团队或服务器间的安全文件共享场景。
SFTP_USERS 环境变量或配置文件(/etc/sftp/users.conf)定义用户/etc/sftp.d/ 目录下的脚本,支持自定义初始化逻辑debian, latest (Dockerfile)alpine (Dockerfile)支持三种用户定义方式,语法统一为:
user:pass[:e][:uid[:gid[:dir1[,dir2]...]]]
| 字段 | 说明 |
|---|---|
user | 用户名(必填) |
pass | 密码(必填,若使用密钥登录可留空,格式为 user::uid...) |
:e | 可选标记,指示密码为加密格式(如 MD5 加密) |
uid | 可选用户 ID,用于匹配主机文件系统权限 |
gid | 可选用户组 ID,用于匹配主机文件系统权限 |
dir1... | 可选子目录列表,将在用户主目录下自动创建并赋予写权限(若不存在) |
docker run 或 docker-compose 的 command 中指定用户SFTP_USERS 环境变量定义(格式同上)/etc/sftp/users.conf(每行一个用户,格式同上)/home/<user>),无法访问主目录外的文件/home/foo/upload),避免直接挂载 /home(用户无法在主目录根目录创建文件)/etc/ssh/ssh_host_*)| 变量名 | 说明 |
|---|---|
SFTP_USERS | 定义用户,格式同命令参数(如 SFTP_USERS="foo:pass:1001 bar:abc:1002") |
docker run -p 22:22 -d atmoz/sftp foo:pass:::upload
说明:
foo,密码 pass,自动在其主目录下创建 upload 子目录sftp foo@<主机IP> 登录并上传文件到 upload 目录挂载主机目录到用户主目录,并指定 UID 以匹配主机权限:
docker run \ -v /host/path/upload:/home/foo/upload \ # 挂载主机目录到用户子目录 -p 2222:22 -d atmoz/sftp \ # 映射容器 22 端口到主机 2222 端口 foo:pass:1001 # 用户 foo,密码 pass,UID=1001
sftp: image: atmoz/sftp volumes: - /host/path/upload:/home/foo/upload # 挂载主机目录 ports: - "2222:22" # 端口映射 command: foo:pass:1001 # 用户定义(格式:user:pass:uid)
通过 OpenSSH 客户端连接:
sftp -P 2222 foo@<主机IP> # -P 指定主机端口(2222),foo 为用户名
将用户信息存储在配置文件中,便于管理多用户:
创建主机配置文件 /host/path/users.conf:
foo:123:1001:100 # 用户 foo,密码 123,UID=1001,GID=100 bar:abc:1002:100 # 用户 bar,密码 abc,UID=1002,GID=100 baz:xyz:1003:100 # 用户 baz,密码 xyz,UID=1003,GID=100
启动容器:
docker run \ -v /host/path/users.conf:/etc/sftp/users.conf:ro \ # 只读挂载配置文件 -v sftp_data:/home \ # 挂载数据卷存储用户主目录 -p 2222:22 -d atmoz/sftp
通过 :e 标记加密密码(需提前生成加密字符串):
docker run \ -v /host/path/share:/home/foo/share \ -p 2222:22 -d atmoz/sftp \ 'foo:$1$0G2g0GSt$ewU0t6GXG15.0hWoOX8X9.:e:1001' # 加密密码(MD5格式),UID=1001
使用 atmoz/makepasswd 工具生成 MD5 加密密码:
echo -n "your-password" | docker run -i --rm atmoz/makepasswd --crypt-md5 --clearfrom=-
通过挂载公钥文件实现密钥认证(无需密码):
docker run \ -v /host/path/id_rsa.pub:/home/foo/.ssh/keys/id_rsa.pub:ro \ # 挂载公钥到用户密钥目录 -v /host/path/share:/home/foo/share \ -p 2222:22 -d atmoz/sftp \ foo::1001 # 密码留空(仅允许密钥登录),UID=1001
说明:
.ssh/keys/ 目录(容器会自动将所有公钥追加到 .ssh/authorized_keys).ssh/authorized_keys 文件(OpenSSH 要求该文件权限为 600,直接挂载可能权限错误)默认容器会自动生成 SSH 主机密钥,若需避免重建容器时用户收到 MITM 警告,可挂载自定义主机密钥:
生成主机密钥(主机执行):
ssh-keygen -t ed25519 -f ssh_host_ed25519_key < /dev/null # Ed25519 密钥 ssh-keygen -t rsa -b 4096 -f ssh_host_rsa_key < /dev/null # RSA 密钥(4096位)
启动容器时挂载密钥:
docker run \ -v /host/path/ssh_host_ed25519_key:/etc/ssh/ssh_host_ed25519_key \ -v /host/path/ssh_host_rsa_key:/etc/ssh/ssh_host_rsa_key \ -v /host/path/share:/home/foo/share \ -p 2222:22 -d atmoz/sftp \ foo::1001
容器启动时自动运行 /etc/sftp.d/ 目录下的脚本,用于自定义初始化(如绑定挂载目录):
创建脚本 /host/path/bindmount.sh:
#!/bin/bash # 绑定挂载示例:将主机目录挂载到用户子目录 function bindmount() { if [ -d "$1" ]; then mkdir -p "$2" fi mount --bind $3 "$1" "$2" # $3 为可选参数(如 --read-only) } # 绑定挂载(需容器开启 CAP_SYS_ADMIN 权限) bindmount /data/common /home/dave/common bindmount /data/docs /home/peter/docs --read-only # 只读挂载
启动容器(需添加 --cap-add=SYS_ADMIN 权限):
docker run \ --cap-add=SYS_ADMIN \ # 允许使用 mount 命令 -v /host/path/bindmount.sh:/etc/sftp.d/bindmount.sh \ -v /host/data:/data \ # 挂载主机数据目录 -p 2222:22 -d atmoz/sftp \ dave::1001 peter::1002
| 特性 | Debian 版本 | Alpine 版本 |
|---|---|---|
| 体积 | 较大(约 200MB+) | 极小(约 20MB+,比 Debian 小 10 倍) |
| 稳定性 | 高(仅修复 bug 和安全问题,发布周期约 2 年) | 较快(发布周期约 6 个月,版本更新频繁) |
| OpenSSH 版本 | 较旧但稳定 | 较新(随 Alpine 发行版更新) |
选择建议:追求稳定性选 Debian,追求轻量和新版本选 Alpine。
OpenSSH 版本取决于基础镜像的发行版:
注意:镜像构建延迟可能导致 OpenSSH 版本略滞后于基础镜像官方包(通常 1-5 天),如需精确版本可手动克隆源码构建。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429