首先确认VSFTP服务是否正常启动,使用命令:
sudo systemctl status vsftpd
若服务未运行,启动服务并设置开机自启:
sudo systemctl start vsftpd && sudo systemctl enable vsftpd
启动失败时,通过日志定位原因:
sudo journalctl -xeu vsftpd.service
VSFTP的主配置文件为/etc/vsftpd/vsftpd.conf,需检查以下关键参数:
listen_ipv6:根据网络环境设为YES(启用IPv6)或NO(仅IPv4);anonymous_enable:设为NO(禁止匿名登录,提升安全性);local_enable:设为YES(允许本地系统用户登录);write_enable:设为YES(允许用户上传文件);chroot_local_user:设为YES(限制用户仅能访问其主目录,防止越权)。sudo systemctl restart vsftpdsudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=10060-10070/tcp
sudo firewall-cmd --reload
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT若启用了SELinux(getenforce显示Enforcing),可能需调整以下策略:
sudo setsebool -P ftp_home_dir onsudo setsebool -P allow_ftpd_full_access onsudo setenforce 0/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,并重启服务器。/etc/vsftpd/ftpusers(禁止登录列表)或/etc/vsftpd/user_list(若userlist_enable=YES且userlist_deny=YES,则列表内用户无法登录);确认用户名/密码正确。write_enable=YES(配置文件中);检查用户主目录权限(应为755,目录所有者有写权限):sudo chown -R ftpuser:ftpuser /path/to/ftp/directorysudo chmod -R 755 /path/to/ftp/directory/etc/hosts.deny是否拒绝了客户端IP;确认防火墙未阻止连接。使用命令查看21端口是否被其他进程占用:
sudo netstat -tuln | grep 21
若有冲突,修改VSFTP监听端口(如改为2121),并更新配置文件中的listen_port参数,同时在防火墙中开放新端口。
VSFTP的日志文件通常位于/var/log/vsftpd.log(若未生成,需在配置文件中启用xferlog_enable=YES并指定日志路径)。通过以下命令分析日志:
sudo grep "error" /var/log/vsftpd.log
或使用tail实时查看最新日志:
sudo tail -f /var/log/vsftpd.log
日志中的具体错误信息(如“cannot locate user entry”“permission denied”)能快速定位问题根源。