Muka FTP 服务端是一个简单但可配置的 FTP/FTPS 服务端,使用 Rust 与 libunftp 构建,支持 Windows、Linux 与 macOS。
功能特性
- 零参数启动:在当前目录以默认端口
21启动匿名 FTP 服务器,具有读写权限。 - 指定端口:通过
--port自定义监听端口。 - 主动/被动模式:通过
--mode active|passive切换。 - 身份验证:通过
--username与--password-env设置登录凭证。 - 指定根目录:通过
--root指定 FTP 根路径。 - TLS 加密:通过
--tls explicit --cert <证书> --key <私钥>启用显式 FTPS。 - 只读模式:通过
--read-only禁止上传、删除、重命名等写操作。 - 自动退出:通过
--auto-exit <秒数>让服务器在指定时间后自动关闭。 - 安全警告:启动时若检测到明文传输、匿名访问、空密码等高风险配置,会打印中文安全提示。
- 跨平台:基于 Rust 标准库与 tokio,可在 Windows、Linux、macOS 上运行。
快速开始
编译
cargo build --release
编译完成后,可执行文件位于 target/release/muka-ftpserver。
运行示例
1. 无参数启动(当前目录,默认端口,匿名访问)
muka-ftpserver
2. 指定端口
muka-ftpserver -p 2121
3. 设置用户名与密码
export MUKA_FTP_PASSWORD=mypass
muka-ftpserver -u myuser --anonymous=false
4. 指定 FTP 根目录
muka-ftpserver -r /path/to/ftp/root
5. 启用 FTPS 加密
muka-ftpserver --tls explicit --cert server.crt --key server.key
6. 只读模式
muka-ftpserver --read-only
7. 指定时间后自动退出
# 运行 60 秒后自动关闭
muka-ftpserver -t 60
命令行参数
-p, --port <PORT> 监听端口 [default: 21]
-b, --bind <BIND> 绑定地址 [default: 0.0.0.0]
-r, --root <ROOT> FTP 根目录 [default: .]
-u, --username <USERNAME> 用户名(不提供则允许匿名访问)
--password-env <VAR> 存放密码的环境变量名 [default: MUKA_FTP_PASSWORD]
--anonymous <ANONYMOUS> 是否允许匿名访问 [default: true]
--read-only 是否只读
-m, --mode <MODE> 主动/被动模式 [default: passive]
--passive-ports <RANGE> 被动模式数据端口范围 [default: 49152-65535]
--tls <TLS> TLS 加密方式 [default: none]
--cert <CERT> TLS 证书文件路径(PEM 格式)
--key <KEY> TLS 私钥文件路径(PEM 格式)
-t, --auto-exit <SECONDS> 运行指定秒数后自动退出
-g, --greeting <GREETING> 连接欢迎消息
--external-ip <IP> 被动模式对外通告的 IP 地址或主机名(用于 NAT 环境)
--log-level <LEVEL> 日志级别 [default: info]
-h, --help Print help
-V, --version Print version
安全提示
- 默认无参数启动会启用匿名访问且不使用加密,不适合直接暴露在公网。
- 建议在公网或生产环境中使用
--tls explicit配合证书,并设置强密码、关闭匿名访问。 - 服务器启动时会自动检测高风险配置并打印中文安全警告。
许可证
MIT License