简介这份汉化绿色版 FileZilla Server 0.9.39 面向需要在 Windows 环境下快速搭建 FTP 服务的个人站长、网络管理员和软件学习者免安装解压即可使用适合局域网文件共享、小型站点资料上传下载及 FTP 服务端功能演练。压缩包仅 1.4MB共 11 个文件主要包括服务端与界面程序两个 exe、支撑运行与 SSL 的 3 个 dll以及记录服务配置的 xml、说明文档和许可页面等 htm/txt 文件结构紧凑便于携带与备份。已有 535 人学习下载说明其在轻量 FTP 服务端场景中具有一定参考价值。功能上覆盖多用户与用户组实时管理、MD5 密码存储、上传下载速度限制、空闲用户自动断开、运行时修改设置无需重启并支持 MODE Z 压缩传输和 FXP/反弹攻击防护方便读者快速理解并实践 FTP 服务配置与基础安全控制。1. 内网文件交换的临时方案0.9.39 汉化绿色版能解决什么问题给一台不能联外网的内网机器做文件收发最省事的办法往往不是部署新服务而是找一个能在 Windows 上直接跑的 FTP 服务端。FileZilla Server 0.9.39 汉化绿色版就属于这类常备工具解压即用、配置跟着目录走、整包拷到另一台机器不用重装管理界面还是中文交给不熟命令行的同事也不容易卡在菜单上。它适合内网临时收发文、老设备固件与日志的落地目录、给只认 FTP 的旧系统当一块共享盘。至于公网裸奔、多租户隔离、需要 SFTP 的场景请不要让它承担这些任务0.9.x 这条线早已停止维护它的适用范围就是内网。2. 从解压到开机自启绿色版如何注册成 Windows 服务绿色版最容易出问题的地方不是配置项有多复杂而是“双击了但不生效”。原因很简单FileZilla Server.exe有两种运行身份——一种是普通前台程序一种是注册到系统里的服务。前者关掉窗口就没了后者才是开机自启、后台常驻的形态。很多人把 exe 双击打开看到托盘图标以为已经装好重启机器后才发现什么都没了。正确的路径是先用命令行把服务注册进去再用管理端连上去配置。整个过程要求一个管理员权限的 cmd普通权限下/install会静默失败或者报一个看不懂的 5 号错误。2.1 解压后的几个文件各自负责什么先别急着双击把目录里的东西分清楚后面排错能省一半时间。绿色版通常不会改动服务端本体汉化一般只替换管理端的界面资源所以“汉化包版本对不上”这类问题的症状基本都出现在管理端而不是传输侧。文件作用绿色版里要不要改动FileZilla Server.exe服务端本体同时是服务安装器不动汉化一般不改它FileZilla Server Interface.exe管理端 GUI汉化主要动这里FileZilla Server.xml用户、组、共享目录、端口、TLS 全在这里备份它就等于备份了整个服务器配置FileZilla Server Interface.xml管理端上次连接的地址与端口换机后连不上先看它doc、readme之类说明文档删掉不影响运行FileZilla Server.xml和服务端 exe 在同一个目录这一点决定绿色版的可迁移性整个文件夹复制走配置跟着走。反过来说如果你用快捷方式或者计划任务从别的路径拉起 exe它就会去那个路径下找 xml找不到就生成一份空配置——这就是“配置莫名其妙丢了”的常见成因。提示迁移前先停服务再复制目录。运行中的服务会周期性回写 xml边跑边拷很容易拷到半截配置。2.2 注册服务并确认它真的起来了下面这一段是整套部署的骨架建议原样抄下来改路径。:: 必须以管理员身份运行 cmd否则注册服务会失败 cd /d D:\tools\FileZillaServer :: 注册为 Windows 服务默认服务名 FileZilla Server FileZilla Server.exe /install :: 启动服务 FileZilla Server.exe /start :: 确认服务状态SERVICE_NAME 与 STATE 两行是重点 sc query FileZilla Server :: 端口监听情况正常应能看到 21 和 14147 netstat -ano | findstr :21 netstat -ano | findstr :14147参数逐个说明/install把 exe 注册成系统服务注册信息写进注册表所以这一步之后删掉目录服务仍然存在但起不来/start与/stop控制服务启停等价于在服务管理器里点按钮/uninstall摘掉服务卸载前建议先/stop/reload-config让服务重新读取 xml改完配置不想重启服务时用它/compat是不注册服务、直接以前台程序方式运行排错时非常有用因为报错会直接弹出来而不是只写进事件日志。sc query那一步不要省。服务状态是STOPPED而netstat里 21 端口没有任何监听说明服务压根没起来这时候去调客户端参数是白费工夫。真正的原因通常在事件查看器的应用程序日志里比如端口被占用、配置文件损坏、xml 权限不足。顺带提一句卸载姿势避免留下一个起来了但删不掉的服务FileZilla Server.exe /stop FileZilla Server.exe /uninstall2.3 管理端口和初始口令第一件事就改掉服务起来之后管理端连的是127.0.0.1:14147不是 21。21 是给 FTP 客户端用的数据/控制端口14147 是给管理员用的配置通道两个完全独立。绿色包为了省事管理口令经常留空或者设成一个固定值这个必须在上线前处理掉。操作顺序是打开管理端连接窗口里地址填127.0.0.1、端口14147、口令按包内说明填连上后进Edit → Settings → Administration把管理口令改成一个像样的值管理端口建议保持 14147 但确认它只监听回环地址。管理口一旦被映射到公网等于把服务器的配置权限交出去了用户、目录、权限全部可改。FileZilla Server Interface.xml记录的就是上次连的地址和端口。换了机器或者改过管理端口之后管理端可能一直弹连接失败先看这个文件里存的还是不是旧值比反复重装服务快得多。3. 用户、组、共享目录三层权限模型与一份可复用的配置FileZilla Server 的权限不是“给个目录加个读写”这么简单它有三层用户、组、共享目录。用户挂在组下面继承设置共享目录则是一个“别名 物理路径 一组权限位”的绑定关系。搞不清这三层最常见的后果是“我明明给了写权限为什么还是 550”。先说结论性的经验能用组就别用用户级配置。设备对接、外包上传、内部只读这三类需求各建一个组用户往里塞后面加人减人只是勾选不用逐条复刻权限。用户级设置会覆盖组级一旦有人在用户级别乱勾排查时你得同时看两处。3.1 共享目录的“别名”和“主目录”共享目录列表里每一行包含三样东西物理路径、客户端看到的别名、权限位。别名这栏经常被忽略——它决定了客户端LIST出来叫什么名字跟磁盘上的真实目录名可以完全无关。做对接时这个很有用磁盘上是D:\ftp\device_log别名设成log对方系统里写死的路径就不用改。列表里必须有一个被标记为HHome的目录客户端登录后默认落在那里。没有主目录的账号能登录成功但一PWD就报错表现得很像“登录成功但什么都干不了”容易被误判成权限问题。共享目录还支持子目录继承。勾上目录项的Subdirs权限会往下传递不勾子目录就得单独授权。做只允许访问某个子目录、不允许往上翻的场景时靠的就是这个开关配合别名。3.2 权限位与实际操作的对应关系这张表建议打印出来贴在显示器边上550、553 这类报错九成能在这张表里找到答案。权限位放行的操作典型用途ReadRETR 下载对外发布WriteSTOR 上传、覆盖已有文件收集上传AppendAPPE 追加、部分客户端的续传日志追加、断点续传DeleteDELE 删文件、RMD 删目录覆盖式同步时必须给Files → Create新建文件上传的前置条件Files → Delete删除文件同上Directories → CreateMKD 建目录按日期分目录上传Directories → Delete删除目录同上Directories → ListLIST/NLST 列目录关掉之后多数客户端put会先失败最后一行是个真实的坑想做“只能上传不能查看”的投递箱把Read和List全关掉结果对方的客户端上传前习惯性先CWD再LIST直接失败日志里看到的是 550 而不是 425很容易误判成权限没配对。可行的做法是保留List但去掉Read——能看见文件名下载不了或者干脆让对方用绝对路径STOR不列目录。Delete这个权限值得单独强调。很多人只勾Write发现覆盖上传失败因为客户端覆盖已有文件时走的是“先删后传”或“临时文件改名”没有Delete就卡住。要允许覆盖Write Delete Files/Create Files/Delete基本得一起给。3.3 NTFS 权限是第二道验证别只查 FTP 这一层FTP 权限位放行了文件系统不放行一样是 550。服务默认以LocalSystem身份运行共享目录的 NTFS ACL 里如果没有SYSTEM的写权限表现出来就是“配置全对但传不上去”。:: 给服务账户授读写OI/CI 表示继承到文件和子目录 icacls D:\ftp\data /grant NT AUTHORITY\SYSTEM:(OI)(CI)M /T :: 查看当前 ACL确认 SYSTEM 那行确实存在 icacls D:\ftp\data(OI)(CI)是对象继承与容器继承M是修改权限读写删都有。/T递归应用到已有子项不加的话老文件仍然是旧 ACL。这一步之后不需要重启服务。网络盘是另一个高频翻车点。服务以LocalSystem跑的时候看不到当前用户映射的网络驱动器Z:\share这种路径在服务里等于不存在。要用网络存储就把共享目录写成 UNC 路径\\nas\share并且把服务登录账户改成有网络访问权限的域账户或本地账户否则连接会一直挂在“正在打开目录”。4. 被动模式与显式 FTPS让客户端真的连得上FTP 是双连接协议这一点在 2024 年依然是最大的摩擦来源。控制连接一条数据连接一条而数据连接的方向在被动模式下是服务器反过来连客户端——准确说是客户端告诉服务器“我在这个端口等你”服务器主动发起。中间隔一层防火墙或者 NAT这条反向连接就断了客户端看到的是425 Cant open data connection。0.9.39 的被动模式默认从系统临时端口里随机取这在纯内网同网段还能凑合一跨网段必翻车。正确做法是显式指定一个端口范围然后把这个范围在防火墙和映射上一起放行。4.1 端口规划三个端口各管什么端口用途是否建议修改21/TCP控制连接登录、命令可改改完客户端要跟着改14147/TCP管理端连接可改确认只监听 127.0.0.150000-50100/TCP被动模式数据连接强烈建议显式指定进Edit → Settings → Passive mode settings勾上Use custom port range填50000-50100。这个范围给多大一条传输占一个端口端口在传输结束后释放所以范围大小约等于并发传输数。给 100 个端口同时传 30 个小文件、每个文件单独开连接理论上够用但客户端开多线程、加上 TIME_WAIT 残留实际能用的会少一些。做设备批量上传的场景我给到 200 个端口起步。同一个页面里还有两个 IP 相关的设置容易互相打架Use the following IP服务器告诉客户端“来连这个地址”。跨 NAT 时必须填映射后的公网地址否则客户端拿到的是内网 IP连不上。Dont use external IP for local connections内网客户端访问时不返回外部 IP。这个要勾上否则内网用户会被指到一个绕远甚至不可达的地址。4.2 防火墙和端口映射的落地顺序顺序错了会浪费很多时间。先把本机防火墙放开再验证内网能通最后才做映射验证外网。# 控制连接 New-NetFirewallRule -DisplayName FZServer-CTRL -Direction Inbound -Protocol TCP -LocalPort 21 -Action Allow # 被动模式数据连接范围必须和软件里填的一致 New-NetFirewallRule -DisplayName FZServer-PASV -Direction Inbound -Protocol TCP -LocalPort 50000-50100 -Action Allow # 管理口只允许本机不要对外开放 New-NetFirewallRule -DisplayName FZServer-ADMIN -Direction Inbound -Protocol TCP -LocalPort 14147 -RemoteAddress 127.0.0.1 -Action Allow参数说明-LocalPort支持范围写法中间用减号-RemoteAddress 127.0.0.1这条规则是给自己加一道限制即使有人误做了映射管理口也不会响应外部请求。做完之后用Get-NetFirewallRule -DisplayName FZServer-*确认规则已启用。端口映射侧的逻辑一样21 映射到 2150000-50100 一对一映射到 50000-50100不要做端口转换否则被动模式返回的端口和实际映射端口对不上客户端会连到一个不存在的端口。4.3 显式 FTPS0.9.x 只认 AUTH TLS这一条能省掉大量无谓的调试0.9.x 这条线只支持显式FTPS客户端先连 21发AUTH TLS升级加密不支持隐式 FTPS 的 990 端口那套。客户端里如果你选了 “FTPS (隐式)”握手阶段就会挂报的是超时或连接被重置看起来像防火墙问题其实是模式选错了。要选的是FTPES或显式 FTP over TLS。证书用自签的就够内网场景没必要折腾 CA。# 生成自签证书和私钥CN 填客户端连接时用的地址 openssl req -x509 -newkey rsa:2048 -nodes -days 3650 \ -keyout fzserver.key -out fzserver.crt \ -subj /CN192.168.1.20-nodes表示私钥不加密这一点很关键0.9.x 的服务在启动时没法交互输入私钥口令加密私钥会导致 TLS 初始化失败日志里只有一句含糊的证书加载错误。生成后把.crt和.key的路径分别填进Edit → Settings → SSL/TLS settings勾上Enable FTP over TLS support再按需勾Disallow plain unencrypted FTP和Force PROT P to encrypt file transfers。老版本内置的加密库对现代客户端不太友好TLS 1.3 是不用想的某些新客户端甚至会因为加密套件不匹配直接拒绝握手。表现出来的现象是“同一台机器命令行能连图形客户端连不上”。内网封闭环境里一个务实的选择是保留明文、只在跨网段时开 FTPS另一个是把客户端降级到允许 TLS 1.0/1.1 的版本。这两种都是在兼容性和安全性之间做交换心里要有数。5. 避坑排查五条实际踩过的记录下面五条按“现象 → 原因 → 解决”写都是我在实际部署里反复遇到的顺序大致按出现频率排。5.1 能登录、能列目录一传文件就 425现象客户端登录成功LIST也正常一开始上传就停在 “Opening data connection”十几秒后报425 Cant open data connection日志里没有任何拒绝记录。原因被动模式端口没指定范围服务器随机给了一个高位端口防火墙没放行或者跨了 NAT服务器把内网 IP 塞进了227 Entering Passive Mode的响应里客户端拿着内网地址去连自然连不上。解决先把被动端口范围固定下来比如 50000-50100防火墙同步放行跨网段时在Passive mode settings里填外部 IP并勾上本地连接不使用外部 IP。验证方法很简单用curl -v看227那一行返回的 IP 和端口落在预期范围就对了。5.2 服务明明在跑管理端连不上现象sc query显示RUNNINGnetstat里 21 端口也在监听但管理端一直弹 “Connection to server lost” 或者干脆卡在连接中。原因三种可能——管理端口不是 14147被前一个使用者改过、管理口令不对、14147 只绑了 127.0.0.1 而你在另一台机器上连。解决先在服务器本机netstat -ano | findstr 14147确认监听地址再看FileZilla Server.xml里 administration 段的端口和口令配置远程管理的话用 SSH 或远程桌面过去操作不要为了方便把管理口开放到网络上。5.3 上传报 550配置看着全对现象客户端上传报550 Permission denied检查用户权限Write明明勾了。原因权限位和 NTFS 是两套验证。要么漏了Files → Create要么Delete没给导致覆盖失败要么共享目录的 NTFS ACL 里没有服务账户的写权限。解决按顺序查。先看客户端是在“新建”还是“覆盖”新建看Files → Create覆盖看Delete再用icacls确认SYSTEM有修改权限最后检查目录是否被设成只读属性。三步都过还不行把服务日志的Log commands打开看服务器收到的到底是STOR还是APPE还是DELE答案就在命令里。5.4 中文文件名在部分客户端里是乱码现象用文件资源管理器Windows 自带那个打开 FTP 地址中文文件名全变成方块或者问号换 FileZilla Client 或 WinSCP 就正常。原因FTP 本身没有规定文件名编码UTF-8 是靠OPTS UTF8 ON协商出来的。系统自带的 FTP 客户端走的是本地 ANSI 代码页对 UTF-8 支持很差。这跟汉化包没有关系汉化改的是管理界面文字不动传输编码。解决对接方如果是程序强制它发OPTS UTF8 ON如果是人操作换一个支持 UTF-8 的客户端。另外尽量别在共享目录路径里用中文和空格虽然 0.9.x 支持但一旦出问题排查成本远高于改个目录名。5.5 重启或换机器后配置“自己没了”现象在一台机器上调好的用户和目录整包复制到另一台机器后打开管理端用户列表是空的或者还是上一次的旧配置。原因服务读的是它自己所在目录下的FileZilla Server.xml。用快捷方式、计划任务、或者别的路径拉起 exe它就去找那个路径下的 xml找不到就新建一份空的。另一种情况是复制的时候服务还在运行xml 处于半写入状态。解决停服务整个目录一起复制启动时用cd /d切到目录里再执行 exe不要用快捷方式的工作目录碰运气。迁移完成后在管理端随便改一个无害的配置项比如欢迎语确认它能写回同一个 xml说明路径是对的。6. 上线前先跑一遍回归三条命令验完再交付配置调完不要直接交给使用方先用命令行客户端跑一遍最小验证集。图形客户端会做很多自动重试和降级把问题盖住命令行不掩盖失败点直接摊在你面前。# 1. 登录 列目录验证控制连接和被动端口 curl -v --ftp-pasv --user devuser:Passw0rd ftp://192.168.1.20/ --list-only # 2. 上传一个真实大小的文件验证写权限与实际带宽 curl -T ./fw.bin --ftp-pasv --user devuser:Passw0rd ftp://192.168.1.20/upload/fw.bin # 3. 显式 FTPS验证证书加载与 PROT P 是否生效 curl -v --ftp-pasv --ssl-reqd --insecure --user devuser:Passw0rd ftp://192.168.1.20/ --list-only-v的输出里重点看两行227 Entering Passive Mode返回的地址端口是否在设定范围内以及AUTH TLS之后是否成功切到加密通道。--ssl-reqd是强制走显式 TLS失败就说明服务端证书没加载好而不是客户端问题--insecure只是跳过自签证书的校验不影响加密本身。第三条失败而前两条通过问题一定在 TLS 配置上排查范围直接缩小。限速和自动封禁是交付前顺手要做的两件事。Edit → Settings → Speed limits里可以设全局上下行也可以在用户级单独限单位是 KB/s做设备批量上传时把上行压到 2000 左右能防止一个客户端把整条链路吃满。Autoban页打开后同一 IP 连续登录失败若干次就自动封禁默认值对内部环境够用别把次数设成 1否则密码输错一次就被锁在门外反而增加运维量。日志建议开成写文件而不是只看屏幕Log commands打开后每一条 FTP 命令都有记录出问题时这是唯一的黑匣子。日志体积增长很快配合定期清理或者按天切割。那次给一个车间做文件投递箱我把权限配好、防火墙放开、curl三条全过就以为完事了。结果第二天对方说“传上去了但文件是 0 字节”查下来是他们客户端先STOR建立连接再写数据中途网络抖动连接断了但文件句柄留了个空壳而我没开Append续传直接失败。从那以后我每次交付 FTP 服务都会强制走一遍“上传中断再续传”的用例并且把Append默认打开——这个权限平时看不出价值出问题时它是唯一能救回半截文件的东西。希望帮到你。本文还有配套的精品资源点击获取