宝塔面板FTP被动模式配置,无法连接FTP修复
宝塔面板装好FTP后连不上,多数情况不是账号密码错误,而是被动模式端口没放行或端口范围没配对。
本文按零基础可照做的顺序,讲清宝塔面板FTP被动模式配置和无法连接FTP的修复方法,操作完你能用客户端正常上传下载文件。
先判断是不是被动模式问题
FTP有两种工作模式:主动模式和被动模式。
主动模式由服务器主动连接客户端,容易被客户端防火墙拦截;
被动模式由服务器开放一个端口范围,客户端去连接,更适合现在的网络环境。
如果连接时出现“读取目录列表失败”“连接超时”“无法建立数据连接”等提示,基本可以判断是被动模式端口没有放行。
在宝塔面板中,FTP服务默认使用Pure-FTPd,被动模式端口范围需要手动配置并同步到防火墙和云服务器安全组。
配置宝塔面板FTP被动模式
登录宝塔面板,左侧菜单点击软件商店,找到已安装的Pure-FTPd,点击右侧的设置。
在设置页面中找到配置修改选项卡,定位到以下参数:
#ForcePassiveIP 192.168.0.1
#PassivePortRange 39000 40000
去掉这两行前面的#注释,并将ForcePassiveIP改为你服务器的公网IP,被动端口范围建议保持39000 40000:
ForcePassiveIP 123.123.123.123
PassivePortRange 39000 40000
修改完成后点击保存,然后回到Pure-FTPd设置首页,点击重启让配置生效。
注意:ForcePassiveIP必须填写公网IP,如果服务器在NAT后面而填了内网IP,客户端仍然无法连接。
放行端口:防火墙与安全组
配置改完只是第一步,端口没放行照样连不上。
需要同时处理系统防火墙和云服务器安全组。
在宝塔面板安全菜单中,添加放行规则:
- 端口范围:
39000-40000,协议:TCP - 端口:
21,协议:TCP(FTP控制端口)
如果服务器是阿里云、腾讯云等,还需要登录云控制台,在安全组中添加入方向规则,放行同样的端口范围。
安全组不放行,宝塔面板里放行了也没用。
放行后可以用以下命令检查端口是否监听:
netstat -tlnp | grep -E '21|39000'
如果看到pure-ftpd在监听,说明服务端配置已生效。
客户端连接设置与验证
打开FileZilla等FTP客户端,新建站点,填写服务器公网IP、FTP用户名和密码,端口填21。
关键一步:在传输设置中,将传输模式改为被动。
如果客户端默认是主动模式,即使服务器配置正确也会连接失败。
点击连接后,观察日志窗口。
正常连接会显示:
状态: 正在连接 123.123.123.123:21...
状态: 连接建立,等待欢迎消息...
状态: 读取目录列表成功
如果仍然失败,回到宝塔面板,在Pure-FTPd设置中点击日志,查看具体报错信息。
常见的有“can't connect to port”说明端口未放行,“530 Login incorrect”说明账号密码问题。
常见疑问
宝塔面板FTP被动模式配置后还是连不上,最常见的原因是什么?
安全组未放行被动端口范围。
宝塔面板防火墙和云服务器安全组是两层独立防护,需要同时放行。
ForcePassiveIP必须填公网IP吗?
是的。
如果服务器在NAT环境或云服务器中,填内网IP会导致客户端收到内网地址后无法回连。
被动端口范围可以改成其他值吗?
可以。
只要确保PassivePortRange的范围与防火墙、安全组放行的范围完全一致即可,建议范围不要过小,避免并发连接时端口耗尽。
FTP和SFTP应该选哪个?
如果只是自己传文件,SFTP更安全,走SSH端口,不需要额外配置被动模式。
FTP适合需要匿名访问或多用户隔离的场景。
避坑要点
- 修改Pure-FTPd配置后必须重启服务,否则不生效。
- 端口范围两边要一致:配置文件写
39000 40000,防火墙和安全组就放行39000-40000。 - 云服务器安全组规则优先级高于宝塔面板防火墙,先确认安全组。
- 如果服务器有多个IP,
ForcePassiveIP要填客户端实际连接的那个公网IP。 - 测试时先用命令行
ftp工具或FileZilla日志确认在哪一步断开,再针对性排查。
按以上步骤操作后,宝塔面板FTP被动模式配置基本能解决大部分无法连接的问题。
如果仍不通,优先检查安全组规则和客户端传输模式设置,这两个位置最容易遗漏。