宝塔面板FTP无法连接?从端口放行、被动模式到530/425报错全排查
或者
宝塔面板FTP无法连接,很多用户第一反应是重置密码、重装FTP插件,但问题往往不在账号密码,多数无法连接集中在三类:端口不通、被动模式数据端口没放行或返回内网IP、目录权限异常,下面按“服务状态 → 端口放行 → 配置参数 → 客户端设置 → 常见报错”顺序手把手排查,照着做基本能解决。
适用人群与排查前准备
本教程适用于:
- 使用宝塔面板管理服务器,已安装 Pure-FTPd,但 FileZilla、WinSCP、FlashFXP 等客户端无法连接;
- 能登录 FTP 但读取目录失败、列表超时;
- 遇到 530、425、500 OOPS、TLS 握手失败等报错;
- 使用云服务器、轻量应用服务器、本地虚拟机均可参考。
排查前请准备好:
- 宝塔面板登录地址;
- 服务器公网 IP;
- FTP 账号、密码;
- 云厂商安全组入口权限,如果使用阿里云、腾讯云、华为云等。
第一步:确认 Pure-FTPd 服务是否正常
面板截图位置提示:宝塔面板 → 软件商店 → 已安装 → Pure-FTPd → 设置。
进入后先看服务状态,如果显示“停止”,直接点击“启动”或“重启”,也可以在服务器终端执行:
service pure-ftpd restart/etc/init.d/pure-ftpd restart
完成后,在终端检查端口是否监听:
ss -lntp | grep 21
正常会看到 0.0.0:21 或 ::21 的监听记录,如果没有监听,说明 Pure-FTPd 未成功启动,需要查看日志:
tail -n 50 /var/log/messages | grep pure-ftpd # 或 journalctl -u pure-ftpd -n 50
第二步:放行 21 端口和被动端口范围
FTP 需要两个通道:命令通道走 21 端口,数据传输走被动端口范围,很多“宝塔面板FTP无法连接”就是因为只放行 21,没有放行被动端口。
云厂商安全组放行
进入云服务器控制台 → 安全组 → 入方向规则 → 添加规则:
| 协议 | 端口范围 | 授权对象 | 说明 |
|---|---|---|---|
| TCP | 21/21 | 0.0.0/0 | FTP命令端口 |
| TCP | 39000-40000/39000-40000 | 0.0.0/0 | Pure-FTPd被动数据端口 |
注意:39000-40000 是宝塔 Pure-FTPd 常见默认范围,以你实际配置为准,如果改过
PassivePortRange,务必放行对应范围。
宝塔面板安全放行
面板截图位置提示:宝塔面板 → 安全 → 放行端口。
分别填写 21 和 39000-40000,备注可写“FTP命令端口”“FTP被动端口”,点击“放行”,完成后建议在服务器终端确认系统防火墙:
firewall-cmd --list-portsiptables -L -n | grep -E '21|39000'
第三步:修改 Pure-FTPd 被动模式配置
这是最容易被忽略的一步,云服务器默认可能返回内网 IP,导致 FTP 客户端能登录但无法列出目录,报 425 或一直“读取目录”。
面板截图位置提示:宝塔面板 → 软件商店 → 已安装 → Pure-FTPd → 设置 → 配置修改。
找到以下参数并检查:
Port 21 PassivePortRange 39000 40000 # ForcePassiveIP 你的公网IP TLS 1
配置参数说明
| 参数 | 作用 | 推荐值 |
|---|---|---|
Port |
FTP 命令端口 | 21 |
PassivePortRange |
被动模式数据端口范围 | 39000 40000,需与安全组一致 |
ForcePassiveIP |
强制被动模式返回指定公网IP | 填你的服务器公网IP |
TLS |
是否启用TLS加密 | 新手建议先设为 0 或 1,不要强制客户端TLS |
关键操作:把 ForcePassiveIP 前面的 去掉,并改成你的公网 IP。
ForcePassiveIP 123.123.123.123
修改后保存,并重启 Pure-FTPd:
service pure-ftpd restart
第四步:客户端连接模式设置
以 FileZilla 为例:
- 打开“站点管理器”;
- 选择你的 FTP 站点;
- 主机填
服务器公网IP,端口填21; - 协议选择“FTP - 文件传输协议”;
- 加密先选择“只使用普通FTP(不安全)”;
- 登录类型选择“正常”,填入 FTP 账号密码;
- 点击“传输设置”标签,传输模式选择“被动”;
- 点击“连接”。
如果被动模式仍失败,可临时切换“主动”测试,但云服务器多 IP 映射场景优先用被动,并确保 ForcePassiveIP 已正确设置,主动模式需要服务器主动连回客户端端口,在 NAT 和家用网络下更容易失败。
常见报错逐条解决
连接超时 / Connection timed out / ECONNREFUSED
原因:21 端口不通、服务未启动、安全组未放行。
解决:
- 按前面步骤检查 Pure-FTPd 是否监听 21;
- 检查云安全组和面板安全是否放行 TCP 21;
- 测试端口连通性:
telnet 服务器IP 21
如果提示连接失败,就是端口不通。
425 Can't open data connection / 读取目录失败
原因:被动端口范围未放行,或 ForcePassiveIP 未设置公网IP,或客户端未使用被动模式。
解决:
- 放行 39000-40000;
- 修改
ForcePassiveIP为公网IP; - FileZilla 传输设置改为“被动”;
- 重启 Pure-FTPd。
530 Login incorrect
原因:FTP账号密码错误,或账号不存在。
解决:
- 面板截图位置提示:宝塔面板 → FTP → 查看或编辑FTP账号;
- 重置密码,避免密码包含特殊字符导致转义问题;
- 确认用户名完整,不要误用邮箱前缀;
- 确认账号未被禁用,FTP 空间配额未用尽。
500 OOPS: cannot change directory
原因:FTP 账号绑定的目录不存在或权限不足。
解决:
- 面板截图位置提示:宝塔面板 → FTP → 账号列表 → 查看“所属目录”;
- 确认该目录存在,如果被删除则重新创建或修改FTP目录;
- 设置目录权限:
chown -R www:www /www/wwwroot/你的目录 chmod -R 755 /www/wwwroot/你的目录
- 重启 Pure-FTPd 后再次连接。
TLS/SSL 握手失败 / 证书错误
原因:客户端和服务端 TLS 设置不匹配。
解决:
- FileZilla 加密选项先改为“只使用普通FTP(不安全)”;
- 如果确实需要 TLS,选择“使用显式的FTP over TLS(如果可用)”;
- 面板中修改 Pure-FTPd 配置,不要强制 TLS,除非已配置有效证书;
- 修改后重启服务。
最终验证清单
完成以上操作后,按顺序逐项确认:
- [ ] Pure-FTPd 已启动,
ss -lntp | grep 21有监听; - [ ] 云安全组放行 TCP 21;
- [ ] 云安全组放行 TCP 39000-40000;
- [ ] 宝塔面板安全放行同样端口;
- [ ]
ForcePassiveIP已填公网IP 且无 注释; - [ ] FileZilla 使用被动模式;
- [ ] 防火墙/安全组规则已生效;
- [ ] FTP 账号目录存在且权限正确。
宝塔面板FTP无法连接的排查核心就是“端口、被动IP、目录权限、客户端设置”四点,按本文步骤逐项检查,90% 以上的连接失败、列表失败、530/425 报错都能解决,如果仍无法连接,请将客户端完整报错日志和 Pure-FTPd 日志一起提交给服务器供应商或宝塔论坛排查。


