首先确认vsftpd服务是否正常运行,使用命令:
systemctl status vsftpd
若服务未启动,执行以下命令启动并设置开机自启:
systemctl start vsftpd && systemctl enable vsftpd
检查服务进程是否存在:
ps aux | grep vsftpd
确保vsftpd进程处于“running”状态。
vsftpd的主配置文件为/etc/vsftpd/vsftpd.conf,需检查以下关键配置项是否正确:
anonymous_enable=NO:禁止匿名登录(若需允许匿名,需设置为YES并配置匿名用户权限);local_enable=YES:允许本地用户登录;write_enable=YES:允许用户上传/修改文件;chroot_local_user=YES:限制用户只能访问其主目录(提升安全性);pasv_enable=YES:启用被动模式(解决防火墙/NAT环境下的连接问题);pasv_min_port/pasv_max_port:设置被动模式端口范围(如10000-10070),需在防火墙中开放该端口段。systemctl restart vsftpd。通过日志获取具体错误信息是排查故障的核心,常用日志文件及查看命令:
/var/log/secure:记录认证失败、权限拒绝等安全相关日志(使用tail -f /var/log/secure实时查看);/var/log/xferlog:记录FTP传输日志(如上传/下载记录,使用tail -f /var/log/xferlog查看);journalctl -xe:查看系统日志,过滤vsftpd相关错误(如journalctl -u vsftpd -n 50查看最近50条vsftpd日志)。ping命令测试客户端与服务器之间的网络连通性(如ping <服务器IP>),若无法ping通,需检查网络设备、线路或IP配置;telnet或nc命令测试FTP端口(默认21)是否开放(如telnet <服务器IP> 21或nc -zv <服务器IP> 21),若端口不通,需检查防火墙或SELinux设置。CentOS默认使用firewalld作为防火墙,需确保开放FTP相关端口:
firewall-cmd --permanent --add-port=21/tcp;firewall-cmd --permanent --add-port=10000-10070/tcp;firewall-cmd --reload。iptables,需执行:iptables -A INPUT -p tcp --dport 21 -j ACCEPTiptables -A INPUT -p tcp --dport 10000:10070 -j ACCEPTservice iptables save && service iptables restart。若SELinux处于enforcing模式(默认),可能会限制FTP访问,需调整以下策略:
setsebool -P ftp_home_dir 1;setsebool -P allow_ftpd_full_access 1;setenforce 0。getsebool -a | grep ftp。ftpuser的主目录为/data/ftp,执行chown -R ftpuser:ftpuser /data/ftp和chmod 755 /data/ftp);/etc/vsftpd/vsftpd.conf中anon_upload_enable=NO(默认值);anon_mkdir_write_enable=YES并确保匿名根目录(如/var/ftp)有写权限(chmod 777 /var/ftp)。/etc/ftpusers文件中(该文件中的用户禁止登录),并验证/etc/pam.d/vsftpd配置是否正确;setsebool -P ftp_home_dir 1);pasv_enable=YES,检查被动模式端口范围是否在防火墙中开放,确保客户端设置为被动模式。