在 Debian 上排查 vsftpd(Very Secure FTP Daemon) 问题,可以按下面一套“从外到内”的思路来排错。
systemctl status vsftpd
常见问题:
systemctl start vsftpdjournalctl -u vsftpd -xe
vsftpd 对配置非常敏感:
vsftpd /etc/vsftpd.conf
如果直接报错,说明配置文件有问题。
常见错误:
anonymous_enable = YES ❌)✅ 正确示例:
anonymous_enable=NO
local_enable=YES
write_enable=YES
ss -ltnp | grep ftp
正常应看到:
LISTEN 0 32 0.0.0.0:21
如果没有:
listen=YES如果是 ufw:
ufw allow 21/tcp
客户端能连上但:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
然后开放端口:
ufw allow 30000:31000/tcp
确认:
local_enable=YES
用户是否被锁:
passwd -S ftpuser
vsftpd 要求:
chmod 755 /home/ftpuser
查看:
cat /etc/pam.d/vsftpd
Debian 默认 没有 SELinux,如果是 Ubuntu/Debian 可忽略。
anonymous_enable=YES
anon_root=/srv/ftp
目录权限:
chown root:root /srv/ftp
chmod 555 /srv/ftp
开启日志:
xferlog_enable=YES
log_ftp_protocol=YES
查看:
tail -f /var/log/vsftpd.log
# 或
journalctl -u vsftpd -f
| 现象 | 原因 |
|---|---|
| 530 Login incorrect | 用户/PAM/密码问题 |
| 500 OOPS | 配置或权限错误 |
| 425 Failed to establish connection | 被动端口未开 |
| 331 Please specify password | 正常,继续登录 |
| 530 Permission denied | write_enable / chroot |
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
如果你愿意,可以把:
vsftpd.conf贴出来,我可以帮你 精准定位。