下面按常见场景给你一套在 Debian 上调试 vsftpd 的实用方法,从“看日志 → 查配置 → 验证连接”一步步来。
dpkg -l | grep vsftpd
systemctl status vsftpd
如果没有运行:
systemctl start vsftpd
systemctl enable vsftpd
编辑配置文件:
sudo nano /etc/vsftpd.conf
确保有以下内容:
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
log_ftp_protocol=YES
debug_ssl=YES # 如果用 FTPS
重启服务:
sudo systemctl restart vsftpd
tail -f /var/log/vsftpd.log
或通用日志:
tail -f /var/log/syslog | grep vsftpd
检查:
sudo nano /etc/vsftpd.conf
常见设置:
local_enable=YES
write_enable=YES
pam_service_name=vsftpd
检查用户是否允许登录:
grep 用户名 /etc/passwd
cat /etc/ftpusers
客户端卡在“列出目录”:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=你的公网IP
防火墙放行:
sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp
检查端口:
ss -tulnp | grep ftp
ftp localhost
或测试被动模式:
ftp -p localhost
更详细:
lftp -d ftp://user@localhost
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
测试:
openssl s_client -connect localhost:21 -starttls ftp
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
xferlog_enable=YES
log_ftp_protocol=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
我可以直接帮你定位问题。