ftp服务器设计与实现(一个Go写的)

ftp服务器设计与实现(一个Go写的)(1)

sftpgo

一个 Go 写的 sftp 服务器,可以架设加密的 FTP 服务。

全功能和高度可配置的SFTP服务器

特征
  • 每个帐户都是他的Home Dir。
  • SFTP帐户是存储在“数据提供者”中的虚拟帐户。
  • 支持SQLite,MySQL,PostgreSQL和bbolt(纯Go中的键/值存储)数据提供程序。
  • 公钥和密码验证。支持每个用户多个公钥。
  • 配额支持:帐户可以将单个配额表示为最大文件数和/或最大总大小。
  • 支持带宽限制,具有不同的上载和下载设置。
  • 每用户最大并发会话数。
  • 每个用户权限:列出目录内容,上载,下载,删除,重命名,创建目录,创建符号链接可以启用或禁用。
  • 每个用户文件/文件夹所有权:您可以将所有用户映射到运行SFTPGo的系统帐户(支持所有平台),或者您可以以root用户身份运行SFTPGo并将每个用户或用户组映射到不同的系统帐户(* NIX只要)。
  • 上传,下载,删除或重命名时可配置的自定义命令和/或HTTP通知。
  • 自动终止空闲连接。
  • 原子上传是可配置的。
  • 可选的SCP支持。
  • 用于用户的REST API和配额管理以及活动连接的实时报告,可能会强制关闭连接。
  • 日志文件准确无误,并以易于分析的JSON格式保存。
平台

SFTPGo是在Linux上开发和测试的。每次提交后,使用Travis CI在Linux和macOS上自动构建和测试代码。通常手动执行测试用例并在Windows上传递。

要求
  • go 1.12或更高。
  • 用作数据提供程序的合适SQL服务器或键/值存储:PostreSQL 9.4 或MySQL 5.6 或SQLite 3.x或bbolt 1.3.x
安装

使用shell中的go工具将包简单地安装到$ GOPATH:

$ go get -u github.com/drakkan/sftpgo

确保Git已安装在您的计算机和系统中PATH。

SFTPGo依赖于作为CGO包的go-sqlite3,因此C在构建时需要编译器。在Linux和macOS上,编译器易于安装或已经安装,在Windows上,您需要从命令提示符下载MinGW-w64并构建SFTPGo。

编译器是仅构建时依赖项,在运行时不需要它。

如果您不需要SQLite,您也可以获取/构建SFTPGo将环境变量设置GCO_ENABLED为0,这样SQLite支持将被禁用,但PostgreSQL,MySQL和bbolt将起作用,您不需要C编译器来构建。

帮助命令

Usage: sftpgo [command] Available Commands: help Help about any command serve Start the SFTP Server Flags: -h, --help help for sftpgo -v, --version

更多命令及相关参数可以查看github上的官方文档

开源地址

由于头条审核网址比较严,防止他们误会是推广,所以大家可以自行搜索下载

也可以关注我的头条号后给我发送 `sftpgo`,会自动把下载地址发送给你(做了关键字自动回复)

您知道哪些好用的小工具,欢迎评论分享,共同探讨学习

更多更优质的资讯,请关注我,你的支持会鼓励我不断分享更多更好的优质文章。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页