CentOS 上 VSFTP 故障排查方法
一 快速定位流程
sudo systemctl status vsftpd,若未运行则 sudo systemctl start vsftpdsudo ss -tulpen | grep ':21\|:20',确认 21(控制)与(若启用主动模式)20(数据)处于监听anonymous_enable、local_enable、write_enable、chroot_local_user、listen、listen_ipv6sudo systemctl restart vsftpd/var/log/messages 或 journalctl -u vsftpd -xeftp your_server_ip 或使用 FileZilla;必要时从外网/不同主机测试,排除客户端问题二 常见故障与处理要点
vsftpd 正在监听;netstat/ss 检查端口占用并释放或更换端口/etc/ftpusers;检查 /etc/pam.d/vsftpd;查看日志中认证失败细节chmod 755 与 chown 修正属主;SELinux 下启用 setsebool -P ftp_home_dir onsetsebool -P allow_ftpd_full_access onvsftpd.conf 设置 pasv_enable=YES、pasv_min_port、pasv_max_port,并在防火墙放行该范围三 防火墙与 SELinux 配置
sudo firewall-cmd --permanent --zone=public --add-service=ftp && sudo firewall-cmd --reloadsudo firewall-cmd --permanent --add-port=6000-7000/tcp && sudo firewall-cmd --reloadsudo iptables -A INPUT -p tcp --dport 21 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 6000:7000 -j ACCEPTsetsebool -P ftp_home_dir on、setsebool -P allow_ftpd_full_access onsudo setenforce 0(验证后再恢复为 enforcing 并采用永久布尔值)四 配置与权限检查清单
anonymous_enable=NO、local_enable=YES、write_enable=YESlocal_root(如需统一根目录)、chroot_local_user=YESpasv_enable=YES、pasv_min_port=6000、pasv_max_port=7000listen_ipv6=YES/NO,避免与 IPv4 冲突chmod 755 /path、chown ftpuser:ftpgroup /path五 日志分析与验证
tail -f /var/log/vsftpd.log 实时观察登录、权限、目录切换与传输错误journalctl -u vsftpd -xe 获取启动参数、权限拒绝与 PAM 报错