首先确认vsftpd服务是否正在运行,使用命令:
sudo systemctl status vsftpd
若服务未启动,执行以下命令启动并设置开机自启:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
服务启动失败时,可通过journalctl -xe查看详细错误日志。
vsftpd的主配置文件为/etc/vsftpd.conf,需检查以下关键参数(常见错误配置会导致连接或权限问题):
listen=YES(确保以独立模式运行);anonymous_enable=NO(禁用匿名登录,除非需要);local_enable=YES(允许本地用户登录);write_enable=YES(允许用户上传文件);chroot_local_user=YES(限制用户只能访问其主目录,需配合allow_writeable_chroot=YES避免权限错误)。sudo systemctl restart vsftpd。通过日志获取具体错误信息是排查故障的关键,常用命令:
sudo journalctl -u vsftpd(查看vsftpd服务日志);
tail -f /var/log/vsftpd.log(实时跟踪日志输出,需确保日志功能开启)。
Ubuntu默认使用ufw防火墙,需开放FTP相关端口:
sudo ufw allow 21/tcp;sudo ufw allow 50000:50050/tcp;sudo ufw allow 20/tcp。sudo ufw reload。sudo netstat -tuln | grep 21)。write_enable=YES、用户主目录有写入权限(sudo chown -R username:username /home/username,sudo chmod -R 755 /home/username)、磁盘空间充足(df -h)。anonymous_enable=NO(禁用匿名登录)、/etc/vsftpd.user_list中的用户是否有访问权限、/etc/vsftpd/ftpusers中的用户是否被禁止。/var/ftp)权限正确:sudo chown root:root /var/ftp,sudo chmod 755 /var/ftp。chroot_list_enable=YES对应的chroot_list_file路径(默认/etc/vsftpd.chroot_list)是否存在,或注释掉chroot_list_enable=YES。sudo setenforce 0;永久关闭需修改/etc/selinux/config中的SELINUX=permissive;sudo aa-status,确保vsftpd的profile未阻止关键操作。使用FTP客户端(如FileZilla)测试连接,确保输入的服务器IP、端口、用户名、密码正确,被动模式(PASV)需正确配置端口范围(pasv_min_port和pasv_max_port)。