
emberstack/sftp本项目提供基于OpenSSH的SFTP服务器Docker镜像,支持通过Docker CLI、Docker Compose及Kubernetes(kubectl和Helm)进行部署,适用于需要安全文件传输的场景,可灵活配置用户、权限及存储路径。
适用于企业内部文件共享、服务器间数据同步、开发环境文件传输等需要安全文件传输的场景,支持单机部署和容器集群部署,满足不同规模的文件传输需求。
若需要帮助或发现bug,请在emberstack/docker-sftp GitHub项目提交issue,也可加入Slack工作区交流:
。
json{ "Global": { "Chroot": { "Directory": "%h", "StartPath": "sftp" }, "Directories": ["sftp"] }, "Users": [ { "Username": "demo", "Password": "demo" } ] }
此配置创建用户demo(密码demo),在用户主目录下创建sftp目录并设为可读写,用户被chroot到/home/demo目录,连接后起始路径为sftp。可添加多用户、自定义目录或按用户覆盖起始路径,也可指定用户UID和GID(详见"高级配置")。
简单启动
shellsession$ docker run -p 22:22 -d --name sftp emberstack/sftp
使用默认配置启动SFTP容器,可通过用户demo、密码demo连接。
自定义配置
shellsession$ docker run -p 22:22 -d --name sftp -v /host/sftp.json:/app/config/sftp.json:ro emberstack/sftp
使用主机/host/sftp.json文件覆盖默认配置。
挂载用户目录
shellsession$ docker run -p 22:22 -d --name sftp -v /host/sftp.json:/app/config/sftp.json:ro -v /host/demo:/home/demo/sftp emberstack/sftp
将主机/host/demo目录挂载到demo用户的sftp目录。
创建配置文件
yamlversion: '3' services: sftp: image: "emberstack/sftp" ports: - "22:22" volumes: - ../config-samples/sample.sftp.json:/app/config/sftp.json:ro
启动服务
shellsession$ docker-compose -p sftp -f docker-compose.yaml up -d
上述配置可在项目的deploy\docker-compose目录找到,可基于此自定义部署。
添加Helm仓库并安装
shellsession$ helm repo add emberstack [***] $ helm repo update $ helm upgrade --install sftp emberstack/sftp
自定义配置参数
| 参数 | 描述 | 默认值 |
|---|---|---|
nameOverride | 覆盖发布名称 | "" |
fullnameOverride | 覆盖完整发布名称 | "" |
image.repository | 容器镜像仓库 | emberstack/sftp |
image.tag | 容器镜像标签 | latest |
image.pullPolicy | 镜像拉取策略 | 若image.tag为latest则为Always,否则为IfNotPresent |
storage.volumes | 定义Pod额外卷 | {} |
storage.volumeMounts | 定义SFTP容器额外卷挂载 | {} |
configuration | 内联覆盖配置值 | null |
configuration.Global.Chroot.Directory | SFTP用户组全局chroot目录,可按用户覆盖 | "%h" |
configuration.Global.Chroot.StartPath | SFTP用户组起始路径,可按用户覆盖 | "sftp" |
configuration.Global.Directories | 为所有SFTP用户创建的目录,可按用户追加 | ["sftp"] |
configuration.Global.HostKeys.Ed25519 | 服务器ED25519私钥 | "" |
configuration.Global.HostKeys.Rsa | 服务器RSA私钥 | "" |
configuration.Users | 用户及其属性数组 | 默认包含demo用户 |
configuration.Users[].Username | 用户名 | N/A |
configuration.Users[].Password | 用户密码,为空或null时禁用密码认证 | N/A |
configuration.Users[].PasswordIsEncrypted | 密码是否已加密(true/false) | false |
configuration.Users[].AllowedHosts | 允许的客户端主机,为空则允许所有 | [] |
configuration.Users[].PublicKeys | 用户公钥列表 | [] |
configuration.Users[].UID | 用户UID | null |
configuration.Users[].GID | 用户GID,会创建对应组并将用户加入 | null |
configuration.Users[].Chroot | 按用户覆盖全局Chroot设置 | null |
configuration.Users[].Directories | 为该用户创建的额外目录 | null |
initContainers | Pod额外初始化容器 | {} |
resources | 资源限制 | {} |
nodeSelector | Pod分配的节点标签 | {} |
tolerations | Pod容忍标签 | [] |
affinity | 节点亲和性配置 | {} |
可在Helm Hub查看更多信息。
此部分因配置选项较多仍在开发中,如需帮助,请在emberstack/docker-sftp项目提交issue。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务