一、基础服务状态检查
systemctl status vsftpd命令检查vsftpd服务是否处于active (running)状态。若未运行,通过systemctl start vsftpd启动服务,并用systemctl enable vsftpd设置开机自启。/etc/vsftpd/vsftpd.conf(主配置文件),修改后务必用vsftpd -t命令检查语法是否正确,避免因配置错误导致服务无法启动。二、常见故障类型及解决方法
netstat -tuln | grep 21或ss -tuln | grep 21命令确认vsftpd是否在监听21端口(默认端口)。若未监听,需检查配置文件中的listen=YES(IPv4)或listen_ipv6=YES(IPv6)设置是否开启。firewalld,执行firewall-cmd --permanent --add-service=ftp添加FTP服务规则,再用firewall-cmd --reload重载;若使用iptables,添加iptables -A INPUT -p tcp --dport 21 -j ACCEPT规则并保存。Enforcing模式,需调整相关布尔值:setsebool -P ftp_home_dir on(允许访问用户主目录)、setsebool -P allow_ftpd_full_access on(允许完整FTP访问)。若问题仍未解决,可临时关闭SELinux(setenforce 0)测试是否为SELinux导致。/etc/ftpusers(禁止FTP登录的黑名单)或/etc/vsftpd/user_list(若配置了userlist_enable=YES,该文件中的用户默认无法登录)。/etc/pam.d/vsftpd文件未被修改或删除(默认配置通常包含pam_unix.so模块,用于本地用户认证)。vsftpd.conf中设置write_enable=YES(允许用户上传文件),并确保用户主目录有写权限(chmod 755 /path/to/user/home)。chcon -R -t user_home_t /path/to/user/home,或调整布尔值setsebool -P ftpd_disable_trans 1(临时允许FTP写入)。vsftpd.conf中设置pasv_enable=YES(开启被动模式)、pasv_min_port=10060(被动模式最小端口)、pasv_max_port=10070(被动模式最大端口)。firewall-cmd --permanent --add-port=10060-10070/tcp添加被动模式端口范围,再用firewall-cmd --reload重载;若使用iptables,添加相应端口范围规则。三、日志分析与高级排查
journalctl -xeu vsftpd.service命令查看vsftpd服务的详细日志,定位具体错误信息(如配置错误、权限问题、连接超时等)。/var/log/messages或/var/log/secure(CentOS 7及以上版本),寻找与FTP连接相关的系统级错误(如SELinux拒绝、防火墙拦截)。