Pure-FTPd 自动退出或断连主因是内置连接限制与超时策略触发。默认全局并发50、单用户10、空闲超时15分钟,需修改启动脚本参数并同步开放被动端口及调整FileZilla客户端设置。

Pure-FTPd 启动后自动退出或连接中突然断开
这通常不是服务“崩溃”,而是被自身策略主动终止连接。Pure-FTPd 默认对并发数和空闲时间非常敏感,稍有流量波动或客户端行为异常(比如 FileZilla 未正确关闭连接),就会触发保护机制,表现为日志里反复出现 Connection closed 或进程直接消失。
关键判断依据是查看 Pure-FTPd 日志:bt 15 进入日志界面,重点找类似这样的行:
Apr 07 22:14:32 localhost pure-ftpd: (?@1.2.3.4) [INFO] Maximum number of connections reached for user 'webadmin'
或者:
Apr 07 22:15:01 localhost pure-ftpd: (?@1.2.3.4) [INFO] Timeout (no operation for 15 minutes)
说明问题出在连接数限制或超时策略上,而非端口、防火墙等底层问题。
-
最大并发连接数:默认值是
-c50(即全局最多 50 个连接),但这个值包含所有用户+匿名连接;单个用户默认仅限 10 个(-C10) -
空闲超时:默认 15 分钟(
-I15),且不区分命令通道还是数据通道 -
连接建立超时:默认 30 秒(
-D),若客户端 TLS 握手慢或网络抖动,可能直接拒绝
修改 /www/server/pure-ftpd/etc/pure-ftpd.conf 中的启动参数
Pure-FTPd 在宝塔中不是靠配置文件直接生效,而是通过 /etc/init.d/pure-ftpd 脚本调用 pure-config.pl 启动,并把参数硬编码在脚本里。所以不能只改 pure-ftpd.conf,必须同步调整启动命令。
执行以下命令打开启动脚本:
vi /etc/init.d/pure-ftpd
找到类似这一行(位置通常在第 40–50 行左右):
/www/server/pure-ftpd/sbin/pure-ftpd --daemonize -A -c50 -B -C10 -D -E -fftp -H -I15 -lpuredb:/www/server/pure-ftpd/etc/pureftpd.pdb -lunix -L20000:8 -m4 -p39000:40000 -s -U133:022 -u100 -g/var/run/pure-ftpd.pid -k99 -Z -Y1
按需修改其中几个关键参数:
- 全局最大连接数:
-c50→ 改为-c200(适合中小站点,避免资源耗尽) - 单用户最大连接数:
-C10→ 改为-C30(防止 FileZilla 多线程上传被拦) - 空闲超时分钟数:
-I15→ 改为-I30(给慢速上传/大文件留缓冲) - 连接建立超时秒数:
-D→ 改为-D60(显式加长,应对 TLS 延迟)
改完保存,然后重启服务:service pure-ftpd restart。注意不要用宝塔面板上的“重启”按钮,它会覆盖你刚改的脚本。
为什么改了参数还是掉线?检查被动模式端口是否真被放行
即使连接数和超时调高了,如果被动模式端口范围(如 -p39000:40000)没在系统防火墙和云安全组里真正开放,客户端会在数据通道建立阶段卡住,最终触发 Pure-FTPd 的超时逻辑并主动断开——你看到的“掉线”,其实是连接失败后的清理动作。
验证方式分三步:
- 确认 Pure-FTPd 确实用了你设的端口范围:
ps aux | grep pure-ftpd,看输出里是否含-p39000:40000 - 确认系统防火墙放行:
firewall-cmd --list-ports | grep 39000(CentOS)或ufw status | grep 39000(Ubuntu) - 确认云平台安全组已添加规则:协议 TCP,端口范围填
39000/40000(注意是斜杠,不是短横)
漏掉任意一层,都会让 Pure-FTPd 认为“连接不可达”,继而放弃维持该会话。
FileZilla 客户端侧必须同步调整传输设置
Pure-FTPd 的服务端参数只是半边,客户端不配合照样掉线。FileZilla 默认开启 10 个并发连接、启用“快速连接”(跳过部分握手)、且超时设得极短,极易触发服务端的 -C 和 -I 限制。
在 FileZilla 的【站点管理器】→【传输设置】中,必须手动调整:
- 最大并发连接数:从默认 10 改为
2或3(与服务端-C30匹配即可,不必拉满) - 连接超时(秒):从 20 改为
60 - 强制使用被动模式:保持勾选(这是前提)
- 禁用“快速连接”:取消勾选,避免 TLS 协商被跳过导致
-D60失效
改完后务必点【连接】重新建立会话,旧连接不会自动继承新设置。
最常被忽略的是客户端并发数和服务器单用户限制的错配——哪怕你把服务端设成 -C100,FileZilla 还是发 10 个连接,Pure-FTPd 就会认为“你超了”,默默踢掉老连接。这种掉线没有错误提示,只在日志里记一笔 Maximum number of connections reached,很容易误判为网络问题。











