下载地址:
https://filezilla-project.org/download.php?platform=win64&type=server

直接点击菜单里的 Configure...(快捷键 Ctrl-F),进入全局设置窗口。
进入弹出的设置窗口后,按顺序配置以下两项:
- 配置被动模式(Passive mode):
- 在左侧找到 Passive mode。
- 勾选自定义端口范围,填入:
50000-50050。 - 在 IPv4 处勾选指定公网 IP,填入 A 机器(本机)的公网 IPv4。
- 确认纯明文(禁用强制 TLS):
- 在左侧找到 FTP over TLS(或 Protocols)。
- 确保不要勾选“Require TLS”,允许普通明文连接(跑满 G 口的关键)。
点右下角 OK 保存后,下一步我们再回来创建传输用户和共享文件夹。点开 Configure... 如果有不确定的界面,随时截图发过来。


不能直接全留默认,必须改动以下两处:
- 端口范围(必须改小,匹配前面的防火墙脚本):
- 默认的
49152到65534包含了 1.6 万个端口,范围太大,且和你刚才脚本放行的端口不一致。 - From 改为:
50000 - To 改为:
50050(50 个端口足够两台服务器跑几十个高并发传输了)
- Public IP or hostname(必填,否则外网连上无法传输):
- 下方提示写着“leave it empty to use the local IP”,如果留空,它会把内网 IP 发给客户端,导致 B 机器在公网直接卡死在“读取目录列表”或“连接超时”。
- 在这个输入框里,必须填入 A 机器(本机)的公网 IPv4 地址。
修改好端口(50000-50050)并填入公网 IP 后,Passive mode 就彻底配置完成了。

当前界面显示的是内置的 <system user>,请按以下步骤新建一个专用的 FTP 账号:
第一步:新建用户
- 点击左下角
Available users下方的 Add 按钮。 - 弹出窗口要求输入用户名,输入一个名字(例如:
ftpuser),点击确认。
第二步:设置启用与密码
选中刚才新建的 ftpuser,在右侧 General 标签页中:
- 勾选顶部的 User is enabled(启用用户)。
- 在 Authentication 下拉菜单中,选择 Require password to log in(要求密码登录)。
- 在下方出现的密码输入框中,输入你要设置的传输密码。
第三步:指定共享文件夹(Mount points)
在下方的 Mount points 区域:
- 点击
Mount points下方的小 Add 按钮。 - 配置弹出的路径设置:
- Virtual path(虚拟路径):输入
/ - Native path(物理路径):点击输入框右侧或直接输入你在服务器上用来存文件的真实路径(例如:
D:\FTP_Share)。
- 检查右侧的权限(Mount options):
- Access mode:确保选择 Read + Write(读写权限)。
- 勾选 Apply permissions to subdirectories(应用于子目录)。
- 勾选 Writable directory structure(允许创建/删除文件夹)。
第四步:保存配置
点击窗口最右下角的 OK(或 Apply)保存生效。
服务端配置全部完成,现在可以去 B 机器打开 FileZilla 客户端输入 A 的公网 IP、ftpuser 和密码进行极速传输了。

在 B 机器(客户端)打开 FileZilla Client:
主机:填入 A 机器的公网 IPv4
用户名:
密码:刚才设置的密码
端口:21
协议/加密:选择“只使用普通 FTP(不安全)”)
方行端口
在 A 机器(服务端) 上以管理员身份运行 PowerShell,直接复制并粘贴执行以下脚本。
脚本会自动创建两条入站规则(TCP 21 控制端口 + TCP 50000-50050 被动数据端口),并且只允许 B 机器的 IP 访问。
PowerShell 一键放行脚本
把代码中第一行的 B.B.B.B 替换为 B 机器的实际公网 IPv4:
# 1. 请将下方的 IP 替换为 B 机器(客户端)的公网 IPv4 地址
$ClientIP = "B.B.B.B"
# 2. 检查并添加 TCP 21 控制端口入站规则(仅限 B 机器访问)
New-NetFirewallRule -DisplayName "FileZilla FTP Control (21)" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 21 `
-RemoteAddress $ClientIP `
-Action Allow
# 3. 检查并添加 TCP 50000-50050 被动数据端口段规则(仅限 B 机器访问)
New-NetFirewallRule -DisplayName "FileZilla FTP Passive (50000-50050)" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 50000-50050 `
-RemoteAddress $ClientIP `
-Action Allow
Write-Host ">>> Windows 本地防火墙规则已成功添加!已限定仅允许 $ClientIP 访问。" -ForegroundColor Green
一键删除/清理规则(后续若不需要可执行)
如果以后不再需要传输,在 PowerShell 中运行这两行即可彻底关闭端口:
Remove-NetFirewallRule -DisplayName "FileZilla FTP Control (21)" -ErrorAction SilentlyContinue
Remove-NetFirewallRule -DisplayName "FileZilla FTP Passive (50000-50050)" -ErrorAction SilentlyContinue
重要提醒:以上脚本处理的是 Windows 系统的内部防火墙。
引入第三台 C 服务器 时 在 A 机器上放行 C 的 IP 以管理员身份在 A 的 PowerShell 运行以下脚本(把第一行替换为 C 服务器的公网 IPv4):
# 替换为 C 机器的公网 IPv4
$CIP = "C.C.C.C"
# 允许 C 访问 TCP 21 控制端口
New-NetFirewallRule -DisplayName "FileZilla FTP Control for C ($CIP)" `
-Direction Inbound -Protocol TCP -LocalPort 21 -RemoteAddress $CIP -Action Allow
# 允许 C 访问 TCP 50000-50050 被动端口
New-NetFirewallRule -DisplayName "FileZilla FTP Passive for C ($CIP)" `
-Direction Inbound -Protocol TCP -LocalPort 50000-50050 -RemoteAddress $CIP -Action Allow
Write-Host ">>> 已成功为 C 机器 ($CIP) 放行入站端口!" -ForegroundColor Green