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

SFTP Docker镜像是一个基于OpenSSH的轻量级SFTP(SSH文件传输协议)和SCP服务器,支持多用户配置、卷挂载和自定义SSH密钥。该镜像为atmoz/sftp的分支版本,新增了SCP支持和多平台兼容性,适用于安全、便捷的文件传输场景。
| 标签 | 说明 | Dockerfile链接 |
|---|---|---|
debian | 基于Debian系统,默认标签(latest) | Dockerfile |
alpine | 基于Alpine系统,体积更小 | Dockerfile-alpine |
/etc/sftp.d/目录执行自定义启动脚本,实现高级配置(如绑定挂载、权限调整等)。用户可通过以下三种方式定义,语法格式为:
user:pass[:e][:uid[:gid[:dir1[,dir2]...]]]
| 参数 | 说明 |
|---|---|
user | 用户名(必填) |
pass | 密码(明文或加密,若加密需添加:e标记) |
e | 可选,标记密码为加密格式(如使用crypt生成的哈希) |
uid | 可选,用户ID(自定义以匹配主机文件权限) |
gid | 可选,组ID |
dir | 可选,用户主目录下的子目录列表(自动创建,具有写权限) |
示例:foo:pass:1001:100:upload,docs 表示用户foo,密码pass,UID=1001,GID=100,自动创建upload和docs子目录。
直接在启动命令中指定用户,多个用户用空格分隔:
docker run ... jmcombs/sftp "user1:pass1:1001" "user2:pass2:1002:100:data"
通过SFTP_USERS环境变量传入用户配置:
docker run -e SFTP_USERS="user1:pass1:1001 user2:pass2:1002" ... jmcombs/sftp
挂载包含用户配置的文件至/etc/sftp/users.conf(只读权限):
docker run -v /host/users.conf:/etc/sftp/users.conf:ro ... jmcombs/sftp
配置文件格式(每行一个用户):
user1:pass1:1001:100:upload # 用户1:密码明文,UID=1001,GID=100,创建upload目录 user2:$1$xyz$abc:e:1002 # 用户2:密码加密(带:e标记),UID=1002
/home/<user>),需通过子目录实现文件上传(用户无法直接在主目录创建文件)。/etc/ssh/ssh_host_*)。创建用户foo(密码pass),自动生成upload目录,映射容器22端口至主机22端口:
docker run -p 22:22 -d jmcombs/sftp foo:pass:::upload
将主机目录挂载至用户foo的upload子目录,指定UID=1001以匹配主机权限:
docker run \ -v /host/upload:/home/foo/upload \ # 挂载主机目录至用户子目录 -p 2222:22 \ # 主机2222端口映射容器22端口 -d jmcombs/sftp \ foo:pass:1001 # 用户配置:用户名foo,密码pass,UID=1001
version: "3" services: sftp: image: jmcombs/sftp volumes: - /host/upload:/home/foo/upload # 挂载主机目录 ports: - "2222:22" # 端口映射 command: foo:pass:1001 # 用户配置
登录方式:使用SFTP客户端连接主机2222端口:
sftp -P 2222 foo@<主机IP>
挂载用户配置文件,批量定义用户:
users.conf:foo:123:1001:100:data # 用户foo,密码123,UID=1001,GID=100,创建data目录 bar:456:1002:100:docs # 用户bar,密码456,UID=1002,GID=100,创建docs目录
docker run \ -v /host/users.conf:/etc/sftp/users.conf:ro \ # 挂载配置文件(只读) -v sftp_data:/home \ # 挂载卷存储用户数据 -p 2222:22 -d jmcombs/sftp
使用加密密码(需添加:e标记),避免明文传输:
crypt模块):docker run --rm python:alpine python -c "import crypt; print(crypt.crypt('YOUR_PASSWORD'))"
输出示例:$1$0G2g0GSt$ewU0t6GXG15.0hWoOX8X9.
docker run \ -v /host/share:/home/foo/share \ -p 2222:22 -d jmcombs/sftp \ 'foo:$1$0G2g0GSt$ewU0t6GXG15.0hWoOX8X9.:e:1001' # :e标记表示密码已加密
挂载公钥文件至用户.ssh/keys/目录,自动添加至authorized_keys:
docker run \ -v /host/id_rsa.pub:/home/foo/.ssh/keys/id_rsa.pub:ro \ # 挂载公钥 -v /host/share:/home/foo/share \ -p 2222:22 -d jmcombs/sftp \ foo::1001 # 密码留空(仅允许密钥登录),UID=1001
挂载自定义主机密钥,避免容器重建导致指纹变化:
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密钥
docker run \ -v /host/ssh_host_ed25519_key:/etc/ssh/ssh_host_ed25519_key \ -v /host/ssh_host_rsa_key:/etc/ssh/ssh_host_rsa_key \ -v /host/share:/home/foo/share \ -p 2222:22 -d jmcombs/sftp \ foo::1001
将脚本挂载至/etc/sftp.d/目录,容器启动时自动执行(如绑定挂载目录):
/host/sftp.d/bindmount.sh:#!/bin/bash # 绑定挂载示例:将/data/common共享至多个用户目录 function bindmount() { mkdir -p "$2" mount --bind "$1" "$2" # 绑定挂载源目录至目标目录 } bindmount /data/common /home/dave/common # 用户dave的common目录 bindmount /data/common /home/peter/common # 用户peter的common目录 bindmount /data/docs /home/peter/docs --read-only # 只读挂载docs目录
CAP_SYS_ADMIN权限):docker run \ --cap-add=CAP_SYS_ADMIN \ # 允许mount系统调用 -v /host/sftp.d:/etc/sftp.d:ro \ # 挂载脚本目录 -v /data:/data \ # 挂载源数据目录 -p 2222:22 -d jmcombs/sftp \ dave::1001 peter::1002 # 创建用户dave和peter
| 特性 | Debian版本 | Alpine版本 |
|---|---|---|
| 镜像大小 | 较大(约200MB) | 极小(约20MB,小10倍) |
| OpenSSH版本 | 稳定,仅包含安全修复和bugfix | 版本更新较快(6个月发布周期) |
| 适用场景 | 稳定性优先的生产环境 | 资源受限环境(如边缘设备) |
OpenSSH版本取决于基础镜像的包管理系统:
可通过以下链接查询具体版本:
镜像每日自动构建,确保集成基础镜像和OpenSSH的最新安全更新。
免费版仅支持 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