pure-ftpd在宝塔中常因端口冲突、被动模式未配置、权限问题或pasv地址错误导致无法启动或连接失败;需停用vsftpd、手动设置并放行被动端口段、检查虚拟用户目录权限、配置公网ip为pasv地址。

宝塔面板里Pure-FTPd根本没启动?先确认是否被自带的vsftpd占了21端口
宝塔6.x/7.x默认安装并启用 vsftpd,哪怕你手动装了 Pure-FTPd,它也大概率起不来——因为21端口已被占用。执行 netstat -tuln | grep :21,如果看到 vsftpd 进程,就得先停掉它:systemctl stop vsftpd,再禁用开机自启:systemctl disable vsftpd。
Pure-FTPd在宝塔中不是“一键安装”组件,它只作为可选插件存在于软件商店(路径:宝塔后台 → 软件管理 → FTP → Pure-FTPd),但安装后不会自动启用,需手动启动并设为开机自启:
- 安装完成后,在插件列表点击
Pure-FTPd右侧的“设置”按钮 - 勾选“开机自启”,点“启动”
- 再执行
systemctl status pure-ftpd确认状态为active (running)
被动模式连不上?必须手动配置并放行端口段
Pure-FTPd 默认使用被动模式(PASV),客户端连接时会协商一个高位端口传输数据。宝塔面板的 Pure-FTPd 插件**不自动配置被动端口范围**,也不自动放行防火墙——这是90%连接超时或“425 Can't open data connection”的根源。
进 Pure-FTPd 设置页(软件管理 → FTP → Pure-FTPd → 设置),找到“被动模式端口范围”输入框,填入明确区间,例如:30000 30100(注意中间是空格,不是短横)。这个范围不能太小(否则并发上传失败),也不宜过大(增加防火墙管理成本),30000–30100 是较稳妥的101个端口。
接着必须同步放开系统防火墙:
- 如果是宝塔自带防火墙:进入“安全”页面 → 放行端口 → 添加
30000-30100(格式必须是起始-结束) - 如果是云服务器(阿里云/腾讯云等):还需在**安全组规则**里额外添加该端口段的入方向 TCP 规则
- 若服务器启用了
firewalld或ufw,需单独执行命令放行,例如:firewall-cmd --permanent --add-port=30000-30100/tcp,然后重载
用户无法登录或权限错乱?检查Pure-FTPd的虚拟用户与目录绑定逻辑
宝塔的 Pure-FTPd 插件创建的用户是纯虚拟用户(非系统用户),其根目录默认绑定到网站根目录(如 /www/wwwroot/example.com),但实际权限由两个地方共同控制:
-
/www/server/pure-ftpd/etc/pureftpd.pdb存储加密后的用户名/密码/路径映射,不可直接编辑 - 用户在面板中设置的“根目录”必须存在且有读写权限;若该目录属主是
www,而 Pure-FTPd 进程以www用户运行(默认如此),才可写入 - 常见问题:新建用户后仍提示“530 Login authentication failed”,多因密码含特殊字符(如
@、$)导致面板解析异常,建议改用字母+数字组合
验证方式:用 ftp -v your-domain.com 手动测试,看是否卡在 USER/PASS 阶段,还是能登录但 LIST 失败——前者是认证问题,后者大概率是目录权限或被动端口未通。
为什么FileZilla连上后卡在“等待服务器允许连接”?别漏掉PASV地址配置
当服务器在NAT环境(如内网、云服务器有公网IP但走SNAT)时,Pure-FTPd 返回给客户端的PASV地址仍是内网IP(比如 192.168.1.100),客户端自然连不上。必须强制它返回公网IP。
编辑配置文件:/www/server/pure-ftpd/etc/pure-ftpd.conf,取消注释并修改这一行:PureFTPd -P your.public.ip.address(注意是大写 -P,不是小写 -p)。保存后重启服务:systemctl restart pure-ftpd。
这步极易被忽略——尤其用域名访问FTP时,Pure-FTPd 不会自动解析域名对应IP,必须硬编码公网IP。如果服务器IP会变(如动态公网IP),就得配合DDNS脚本定期更新该配置。










