一、快速检查清单
✅ FTP服务是否启动(Pure-FTPd)
✅ 防火墙端口(20、21、30000-40000)是否开放
✅ 被动模式配置是否正确
✅ 用户权限和目录权限设置
二、详细解决方案
1. 检查FTP服务状态
# 查看Pure-FTPd状态
systemctl status pure-ftpd
# 重启服务
systemctl restart pure-ftpd
# 宝塔面板操作
# 软件商店 → 已安装 → Pure-FTPd → 重启
2. 防火墙配置
宝塔防火墙:
- 安全 → 防火墙 → 放行端口:
20,21,30000:40000
系统防火墙(CentOS/Ubuntu):
# 放行端口
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=20/tcp --permanent
firewall-cmd --zone=public --add-port=30000-40000/tcp --permanent
firewall-cmd --reload
# 或使用ufw(Ubuntu)
ufw allow 21/tcp
ufw allow 20/tcp
ufw allow 30000:40000/tcp
云服务器安全组:
- 阿里云/腾讯云控制台 → 安全组 → 添加入站规则:
- 端口范围:
20/21, 30000-40000
- 协议:TCP
- 来源:
0.0.0.0/0 或 指定IP
3. 被动模式配置
修改Pure-FTPd配置文件:
# 编辑配置文件
vim /www/server/pure-ftpd/etc/pure-ftpd.conf
# 确保以下配置正确:
PassivePortRange 30000 40000
ForcePassiveIP 你的服务器公网IP # 重要!填写实际公网IP
4. 用户和权限问题
检查用户设置:
宝塔面板 → FTP → 检查账号状态是否正常
确保FTP用户根目录存在且有权限
检查用户是否被锁定
权限修复:
# 检查目录权限(通常应为755)
ls -ld /www/wwwroot/你的网站目录
# 修复权限
chmod 755 /www/wwwroot
chown www:www /www/wwwroot -R
5. SELinux问题(CentOS)
# 临时关闭SELinux(测试用)
setenforce 0
# 永久关闭
vim /etc/selinux/config
# 修改 SELINUX=disabled
# 或设置SELinux允许FTP
setsebool -P ftp_home_dir on
getsebool -a | grep ftp
6. 主动/被动模式切换
在FTP客户端中:
FileZilla:编辑 → 设置 → 连接 → FTP → 传输模式 → 主动/被动
尝试切换模式看是否能连接
7. 端口检测
# 检测21端口是否监听
netstat -tunlp | grep :21
# 检测被动端口范围
netstat -tunlp | grep pure-ftpd
# 测试端口连通性
telnet 你的服务器IP 21
8. 配置文件检查
# 查看Pure-FTPd错误日志
tail -f /www/server/pure-ftpd/logs/pureftpd.log
# 检查配置文件
cat /www/server/pure-ftpd/etc/pure-ftpd.conf | grep -v "^#"
9. 使用SFTP替代
如果FTP问题难以解决,建议使用SFTP:
- 端口:22
- 协议:SFTP
- 用户名:系统用户名(如root)
- 密码:系统密码
- 在宝塔面板中,可直接使用SSH账号连接
三、常见错误及解决
错误1:530 Login authentication failed
# 重置FTP密码
# 宝塔面板 → FTP → 修改密码
# 或删除重建用户
# 宝塔面板 → FTP → 删除账号 → 重新添加
错误2:227 Entering Passive Mode
- 原因:被动模式IP配置错误
- 解决:修改
ForcePassiveIP为公网IP
错误3:425 Can't open data connection
- 原因:防火墙或被动端口未开放
- 解决:开放30000-40000端口范围
错误4:553 Can't open that file: Permission denied
# 修复目录权限
chmod -R 755 /www/wwwroot
chown -R www:www /www/wwwroot
四、一键检测脚本
#!/bin/bash
echo "=== FTP连接问题检测 ==="
echo "1. 检查服务状态..."
systemctl status pure-ftpd | grep Active
echo "2. 检查端口监听..."
netstat -tunlp | grep pure-ftpd
echo "3. 检查防火墙..."
firewall-cmd --list-ports | grep "21\|20\|30000-40000"
echo "4. 检查配置文件..."
grep "ForcePassiveIP" /www/server/pure-ftpd/etc/pure-ftpd.conf
echo "5. 检查SELinux..."
getsebool | grep ftp
五、替代方案
如果问题仍无法解决:
使用宝塔文件管理器:Web端直接管理文件
使用SFTP:通过SSH协议传输文件
使用rsync:命令行同步工具
更换FTP服务端:尝试vsftpd
六、推荐设置
使用SFTP代替FTP(更安全)
限制FTP登录IP(增强安全)
定期更新Pure-FTPd
使用TLS/SSL加密连接
按照以上步骤逐步排查,大多数FTP连接问题都能解决。如果仍有问题,请提供具体错误信息以便进一步分析。