MyFTP

FTP/SFTP 服务器 · 多协议支持 · Web 文件管理

22+
FTP 命令
100+
并发连接
FTP+SFTP
双协议
Go
纯 Go 实现

产品概述

MyFTP 是一款使用 Go 语言开发的模块化、多协议文件传输服务器,支持 FTP 协议(RFC 959)、SFTP 协议和 Web 文件管理界面。系统提供完整的文件上传/下载、目录操作、用户认证、权限控制等功能,支持通过浏览器直接管理文件。

MyFTP 定位于企业文件共享、远程文件管理、自动化文件传输、开发调试环境等场景,提供轻量级、易部署的文件传输解决方案,支持 FTP 客户端、SFTP 客户端和 Web 浏览器三种访问方式。

技术架构

┌──────────────┐  ┌──────────────┐  ┌──────────────┐
│  FTP Client  │  │  SFTP Client │  │   Browser    │
└──────┬───────┘  └──────┬───────┘  └──────┬───────┘
       │ 21/30000-30010  │     22          │    8080
       ▼                 ▼                 ▼
┌─────────────┐  ┌─────────────┐  ┌─────────────┐
│ FTP Server  │  │ SFTP Server │  │ Web Server  │
└──────┬──────┘  └──────┬──────┘  └──────┬──────┘
       └─────────────────┼───────────────┘
                         ▼
               ┌─────────────────┐
               │  Virtual File   │
               │    System       │
               └────────┬────────┘
                        ▼
               ┌─────────────────┐
               │  Local Storage  │
               └─────────────────┘
客户端层
FTP 客户端 SFTP 客户端 Web 浏览器
服务层
FTP 服务器 SFTP 服务器 Web 管理界面
核心模块
认证授权 文件系统 配置管理 日志系统
存储层
虚拟文件系统接口 本地文件系统实现 路径安全检查

核心特性

📡 FTP 协议支持

完整实现 FTP 协议(RFC 959),支持 22+ 个标准命令,包括认证、目录操作、文件传输、文件管理等核心功能。

🔐 SFTP 协议支持

基于 SSH 的 SFTP 协议实现,支持加密传输,SSH 密钥管理,密码认证,提供比 FTP 更高的安全性。

🌐 Web 文件管理

基于浏览器的文件管理界面,支持文件列表展示、文件夹导航、上传/下载、创建/删除/重命名操作。

📁 文件传输命令

支持 RETR(下载)、STOR(上传)、APPE(追加)、REST(断点续传)等完整文件传输命令集。

📂 目录操作

支持 PWD、CWD、CDUP、LIST、MKD、RMD 等目录操作命令,完整的目录浏览和管理能力。

🔒 用户认证

多用户管理,密码验证,会话管理,权限控制,登录日志,确保只有授权用户可以访问文件。

🛡️ 安全防护

内置目录穿越防护,防止路径逃逸攻击,文件类型限制,文件大小限制,连接超时控制。

🔌 主动/被动模式

FTP 支持主动模式(PORT)和被动模式(PASV),自动分配数据端口,适配不同网络环境。

⚙️ 灵活配置

config.ini 配置文件,支持 FTP 端口、SFTP 端口、Web 端口、根目录、用户列表、日志级别等配置项。

📊 日志系统

5 级日志(DEBUG/INFO/WARN/ERROR/FATAL),控制台 + 文件双输出,自动时间戳和行号,日志文件轮转。

🧪 测试覆盖

核心模块 60+ 测试用例,100% 通过率,80%+ 代码覆盖率,确保系统稳定性和功能正确性。

📦 模块化设计

清晰的架构设计,配置、认证、文件系统、FTP、SFTP、Web 模块独立,易于扩展和维护。

Web API 文档

认证接口

接口方法说明
/api/loginPOST用户登录

文件管理接口

接口方法说明
/api/files?path=/folderGET获取文件列表
/api/folderPOST创建文件夹
/api/upload?path=/folderPOST上传文件
/api/download?path=/file.txtGET下载文件
/api/item?path=/file.txtDELETE删除文件/文件夹
/api/renamePUT重命名

登录示例

# 用户登录 curl -X POST http://localhost:8080/api/login \ -H "Content-Type: application/json" \ -d '{"username": "admin", "password": "admin123"}' # 响应示例 { "token": "xxx", "success": true }

FTP 命令示例

# 使用 FTP 客户端连接 ftp localhost 2121 # 登录后常用命令 USER admin # 用户名 PASS admin123 # 密码 PWD # 显示当前目录 CWD /folder1 # 切换目录 LIST # 列出目录内容 RETR file.txt # 下载文件 STOR newfile.txt # 上传文件 MKD newfolder # 创建目录 DELE oldfile.txt # 删除文件 QUIT # 退出

快速开始

1. 配置文件

# config.ini [server] ftp_port = 2121 sftp_port = 2222 web_port = 8080 root_dir = ./data max_connections = 100 timeout = 300 [ftp] enable = true passive_ports = 30000-30010 welcome_message = Welcome to MyFTP Server [sftp] enable = true host_key_file = ./keys/host_key [web] enable = true session_timeout = 3600 upload_max_size = 104857600 [users] # 格式:用户名=密码 admin=admin123 user1=password1 [logging] level = info file = ./logs/server.log max_size = 10 max_backups = 5

2. 编译运行

# 编译 go build -o server.exe cmd/server/main.go # 运行 server.exe

3. 访问服务

# FTP 访问 ftp localhost 2121 # 或使用 FileZilla、WinSCP 等客户端 # SFTP 访问 sftp -P 2222 admin@localhost # Web 管理界面 http://localhost:8080 # 用户名: admin # 密码: admin123

配置说明

配置项类型默认值说明
server.ftp_portint2121FTP 控制端口
server.sftp_portint2222SFTP 端口
server.web_portint8080Web 管理端口
server.root_dirstring./data文件根目录
server.max_connectionsint100最大并发连接数
ftp.passive_portsstring30000-30010被动模式端口范围
sftp.host_key_filestring./keys/host_keySSH 主机密钥
web.upload_max_sizeint104857600Web 上传最大大小(100MB)
logging.levelstringinfo日志级别

立即下载

选择合适的版本开始使用 MyFTP

📦 下载完整包

版本: v1.0.0 | 平台: Windows/Linux amd64

包含: server.exe (服务器) + config.ini (配置文件) + Web 管理界面