开源SFTP 服务软件SFTPGo

开源地址:https://github.com/drakkan/sftpgo

支持平台:Linux、macOS 和 Windows

SFTPGo功能齐全、高度可配置化、支持自定义 HTTP/S,FTP/S 和 WebDAV 的 SFTP 服务。

一些存储后端支持:本地文件系统、加密本地文件系统、S3(兼容)对象存储,Google Cloud 存储,Azure Blob 存储,SFTP。

功能特点:
支持服务本地文件系统、加密本地文件系统、S3 兼容对象存储、Google Cloud 存储、Azure Blob 存储或其它基于 SFTP/SCP/FTP/WebDAV 协议的 SFTP 账户。
虚拟目录支持:一个虚拟目录可以用于支持的存储后端。你可以,比如,一个 S3 用户暴露了一个 GCS bucket(或者其中一部分)在特定的路径下、一个加密本地文件系统在另一个。虚拟目录可以对于大量用户作为私密或者共享,分享虚拟目录你可以为每个用户定义不同的配额。
可配置的 自定义命令 和/或 HTTP 钩子 在 SSH 命令的 upload, pre-upload, download, pre-download, delete, pre-delete, rename, mkdir, rmdir 阶段,和用户添加、更新、删除阶段。
存储在 “数据提供程序” 中的虚拟账户。
支持 SQLite, MySQL, PostgreSQL, CockroachDB, Bolt (Go 原生键/值存储) 和内存数据提供程序。
为本地账户提供 Chroot 隔离。云端账户可以限制为特定的基本路径。
每个用户和每个目录虚拟权限,对于每个暴露的路径你可以允许或禁止:目录展示、上传、覆盖、下载、删除、重命名、创建文件夹、创建软连接、修改 owner/group/file 模式和更改时间。
为用户和目录管理提供、数据保留、备份、恢复和即时活动连接的实时报告,可能会强制关闭连接,提供 REST API。
基于 Web 的管理员界面 可以容易地管理用户、目录和连接。
Web 客户端界面 以便终端用户可以在浏览器中更改他们的凭据、管理和共享他们的文件。
公钥和密码认证。支持每个用户多个公钥。
SSH 用户 证书认证.
键盘交互认证。您可以轻松设置可定制的多因素身份认证。
部分验证。你可以配置多步验证请求,例如,用户密码在公钥验证之后。
每个用户的身份验证方法。
双重验证 基于实现一次性密码 (RFC 6238) 可以与 Authy、Google Authenticator 和其他兼容的应用程序配合使用。
通过 群组 精简用户管理。
通过外部 程序/HTTP API 自定义验证。
Web 客户端和 Web 管理员他用户界面支持 OpenID Connect 验证,所以它们很容易被集成在诸如 Keycloak 之类的身份认证程序。你可以在 此 获取更多信息。
静态数据加密。
在登录之前通过 程序/HTTP API 进行动态用户修改。
配额支持:账户拥有独立的磁盘配额表示为总计最大体积 和/或 最大文件数量。
带宽节流,基于客户端 IP 地址独立设置上传、下载和覆盖。
数据传输带宽限制,限制总量或基于客户端 IP 地址设置上传、下载和覆盖。限制可以通过 REST API 重置。
支持每个协议限速,可以可选与内置的防护连接实现自动封禁重复超过设置限制的主机。
每个用户的最大并发会话。
每个用户和全局 IP 过滤:登录可以被限制在特定的 IP 段和指定的 IP 地址。
每个用户和每个文件夹类似于 shell 的模式过滤:文件可以被允许、禁止和隐藏基于类 shell 模式。
自动使 idle 连接终止。
通过内置的 防护 自动管理禁止名单。
通过 插件 实现 地理-IP 过滤。
原子上传是可配置的。
每个用户 文件/目录 所有权映射:你可以将所有用户映射到运行 SFEPGo 的系统账户(所有的平台都是支持的),或者你可以使用 root 用户运行 SFTPGo 并且映射每个用户或用户组到一个不同系统账户(仅支持 *NIX)。
通过 SSH 支持 Git 仓库。
支持 SCP 和 rsync。
支持 FTP/S。你可以配置 FTP 服务为控制和数据连接都需要 TLS。
WebDAV 是支持的。
两步 TLS 验证,具有客户端证书身份验证的 aka TLS,支持 REST API/Web Admin、FTPS 和 基于 HTTPS 的 WebDAV。
每个用户协议限制。你可以为每个用户配置允许的协议(SSH/HTTP/FTP/WebDAV)。
暴露 输出指标。
支持 HAProxy PROXY 协议:你可以不需要丢失客户端地址信息代理 和/或 负载平衡 SFTP/SCP/FTP 服务。
简单从 Linux 系统用户账户进行 迁移。
可携带模式:按需共享单个目录的便捷方式。
SFTP 子系统模式:你可以使用 SFTPGo 作为 OpenSSH 的 SFTP 子系统。
性能分析基于内置的 分析器。
配置项格式基于你的选择:JSON, TOML, YAML, HCL, envfile 都是支持的。
日志文件是精确的,它们被存储为易被解析的 JSON 格式。(更多信息)
SFTPGo 支持 插件系统,因此可以使用外部插件拓展。