Debian FTP Server(以vsftpd为例)故障排查指南
首先确认vsftpd服务是否处于运行状态,使用以下命令查看服务状态:
sudo systemctl status vsftpd
若服务未运行,启动服务:sudo systemctl start vsftpd;设置开机自启:sudo systemctl enable vsftpd。
日志是定位故障的关键,通过以下命令查看实时日志或历史记录:
tail -f /var/log/syslogxferlog_enable=YES):tail -f /var/log/vsftpd.logjournalctl -u vsftpd --since "1 hour ago"vsftpd的主配置文件为/etc/vsftpd.conf,常见错误配置包括:
local_enable=YES(允许本地用户登录),若用户被加入/etc/ftpusers(禁止FTP访问的黑名单),需移除该用户。write_enable=YES(允许写入),并检查用户主目录权限(如/home/ftpuser应设置为drwxr-xr-x,用户可写)。pasv_enable=YES、pasv_min_port(最小端口,如30000)、pasv_max_port(最大端口,如31000),并在防火墙中开放这些端口。sudo systemctl restart vsftpd。ping <FTP服务器IP>测试客户端与服务器的网络连接,若无法ping通,需排查网络线路或DNS配置。sudo ufw allow 21/tcp、sudo ufw allow 30000:31000/tcp、sudo ufw reload。sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT、sudo iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT、sudo iptables-save > /etc/iptables.rules。/etc/ftpusers(禁止FTP访问);若用户shell为/sbin/nologin或/bin/false,需修改为/sbin/nologin(允许FTP登录但禁止shell访问):sudo usermod -s /sbin/nologin ftpuser。/home/ftpuser的属主为ftpuser,权限为755);若用户被chroot(chroot_local_user=YES),需确保chroot目录(如/home/ftpuser)的权限正确(属主为用户,权限为755)。若系统启用SELinux,可能会限制vsftpd的访问,常见解决方法:
sudo setenforce 0(若禁用后FTP正常,需调整策略)。sudo setsebool -P ftpd_full_access on。sudo setsebool -P ftpd_use_nobody on。使用FTP客户端(如ftp、lftp或FileZilla)测试连接:
ftp <FTP服务器IP>,输入用户名/密码,尝试上传/下载文件。ls /home/ftpuser);确保用户对该目录有r-x权限(ls -ld /home/ftpuser)。x权限(ls -ld /home/ftpuser/subdir)。w权限(ls -l /home/ftpuser/file.txt)。NO_PUBKEY错误,需导入缺失的密钥:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <缺失的KEY>,然后更新软件包:sudo apt update。