Debian 上 vsftpd 连不上 常见原因很多,下面按最常见 → 较少见的顺序给你一个排查清单(90% 的问题都在前 5 项)。
systemctl status vsftpd
如果没运行:
sudo apt install vsftpd
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
Debian 默认可能启用 nftables 或 ufw
sudo ufw status
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
端口范围要和
vsftpd.conf里的pasv_min_port / pasv_max_port一致
客户端能连上但 列不出目录,基本就是这个问题。
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
pasv_address=你的公网IP
修改后重启:
sudo systemctl restart vsftpd
cat /etc/ftpusers
这个文件里的用户禁止登录 FTP
如果你用的是 root / www-data 等,会被拒绝。
✅ 解决:
ftpusers 中移除vsftpd 对权限非常敏感
ls -ld /home/用户名
✅ 推荐权限:
chmod 755 /home/用户名
⚠️ 不能给写权限给根目录(chroot 场景)
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
pasv_address=公网IP
修改后:
sudo systemctl restart vsftpd
Debian 默认没有 SELinux,如果你是从 CentOS 迁移过来的经验,可以忽略。
| 现象 | 原因 |
|---|---|
| 连不上 | 防火墙 / vsftpd 没启动 |
| 530 Login incorrect | 用户被禁 / 密码错 |
| 425 / 无法列目录 | 被动模式 |
| 500 OOPS: vsftpd | 权限或 chroot 配置错误 |
在服务器上抓日志:
journalctl -u vsftpd -f
或:
tail -f /var/log/vsftpd.log
客户端用 FileZilla,把日志贴出来,我可以直接帮你定位。
你可以直接回我:
vsftpd.conf 内容我可以直接帮你改到可用 ✅