常见原因:
/etc/vsftpd.conf)中listen=YES未启用(IPv4监听)。解决方案:
sudo ufw allow 21/tcp,然后sudo ufw reload;sudo systemctl status vsftpd,若未运行则启动:sudo systemctl start vsftpd;listen=YES(若使用IPv6则需调整listen_ipv6),修改后重启服务:sudo systemctl restart vsftpd。常见原因:
write_enable=NO(禁止写入);df -h查看)。解决方案:
sudo nano /etc/vsftpd.conf,确保write_enable=YES,保存后重启服务;sudo chown ftpuser:ftpuser /home/ftpuser(将目录所有者设为FTP用户),sudo chmod 755 /home/ftpuser(允许用户写入);常见原因:
pasv_enable=YES但未设置pasv_address(云服务器需指定公网IP)。解决方案:
sudo ufw allow 21/tcp(主动模式),若使用被动模式需开放端口范围(如30000-31000):sudo ufw allow 30000:31000/tcp;ping 服务器IP,确认能正常访问;/etc/vsftpd.conf中添加pasv_enable=YES、pasv_min_port=30000、pasv_max_port=31000、pasv_address=你的公网IP,重启服务。常见原因:
ssl_enable=NO(未启用SSL);rsa_cert_file/rsa_private_key_file指向不存在的文件)。解决方案:
sudo mkdir /etc/vsftpd && sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem;/etc/vsftpd.conf中设置ssl_enable=YES、rsa_cert_file=/etc/vsftpd/vsftpd.pem、rsa_private_key_file=/etc/vsftpd/vsftpd.pem;force_local_data_ssl=YES、force_local_logins_ssl=YES,重启服务。常见原因:
chroot_locak_user=YES少一个“l”);#而非//);pasv_min_port=abc应为数字)。解决方案:
sudo vsftpd /etc/vsftpd.conf,若有错误会提示具体行号;sudo tail -f /var/log/vsftpd.log,根据日志信息修正配置;sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak,sudo apt reinstall vsftpd重新生成默认配置。常见原因:
root);chmod 700导致用户无法进入);allow_writeable_chroot=NO(当chroot_local_user=YES时,chroot目录需可写)。解决方案:
sudo chown ftpuser:ftpuser /home/ftpuser(ftpuser为FTP用户名);sudo chmod 755 /home/ftpuser(允许用户读取和进入);/etc/vsftpd.conf中设置allow_writeable_chroot=YES,重启服务。常见原因:
/etc/vsftpd/virtual_users.db属主为root);/etc/pam.d/vsftpd未启用虚拟用户认证);guest_username)无权限访问目录。解决方案:
sudo chown root:root /etc/vsftpd/virtual_users.db,sudo chmod 600 /etc/vsftpd/virtual_users.db;/etc/pam.d/vsftpd中应有auth required pam_userdb.so db=/etc/vsftpd/virtual_users(根据实际数据库文件名调整);guest_username(如ftpuser)对映射目录有权限:sudo chown guest_username:guest_username /path/to/virtual_dir。常见原因:
Enforcing模式,阻止vsftpd访问用户目录;ftp_home_dir未开启)。解决方案:
sudo setenforce 0(若问题解决,需永久调整);sudo setsebool -P ftp_home_dir on(允许FTP访问用户家目录);