在 Debian 上调试 FTP 服务器,通常取决于你使用的是哪种 FTP 服务(常见的是 vsftpd、proftpd 或 pure-ftpd)。下面以最常见的 vsftpd 为例,系统讲一下调试思路和常用方法,最后也会提一下通用技巧。
systemctl status vsftpd
如果没运行:
systemctl start vsftpd
systemctl enable vsftpd
查看是否在监听端口:
ss -tlnp | grep 21
# 或
netstat -tlnp | grep 21
通常有两个地方:
/var/log/vsftpd.log
/var/log/syslog
实时查看:
tail -f /var/log/vsftpd.log
tail -f /var/log/syslog
常见错误示例:
connection refused → 服务没起或防火墙530 Login incorrect → 用户/密码/PAM 问题500 OOPS → 配置错误编辑配置文件:
vim /etc/vsftpd.conf
建议临时开启:
log_ftp_protocol=YES
debug_ssl=YES # 如果用 FTPS
xferlog_std_format=NO
重启服务:
systemctl restart vsftpd
ftp localhost
或显式调试:
ftp -d localhost
如果是云服务器,常见问题是 被动模式端口未开放。
在 /etc/vsftpd.conf 中:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=你的公网IP
防火墙放行:
ufw allow 21/tcp
ufw allow 30000:31000/tcp
ufw status
如果用了 iptables:
iptables -L -n
检查:
local_enable=YES
write_enable=YES
用户是否被锁:
passwd -S 用户名
家目录权限:
ls -ld /home/用户名
anonymous_enable=YES
anon_root=/srv/ftp
tcpdump -i eth0 port 21 -n -A
可以看到 FTP 命令交互过程。
systemctl status proftpd
/var/log/proftpd/proftpd.log
systemctl status pure-ftpd
/var/log/syslog
如果你能告诉我:
我可以给你更精确的调试命令。