Ubuntu 上 FTP登录失败是很常见的问题,原因通常集中在服务配置、用户权限、防火墙/PASV、以及 FTP 与 SFTP 混淆这几类。下面按最常见原因 → 排查方法 → 解决方式来说明。
vsftpd、proftpd✅ 如果你用:
sftp user@ip
那是 SFTP,不是 FTP,不需要 vsftpd
❌ 用 FTP 客户端连 SFTP 端口(22)会失败
systemctl status vsftpd
若未运行:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
FTP 用户必须:
/etc/ftpusers检查:
grep 用户名 /etc/ftpusers
若有,删除该行。
用户 shell 应为:
/bin/bash
不是 /usr/sbin/nologin
/etc/vsftpd.conf 中常见错误:
✅ 正确配置示例:
local_enable=YES
write_enable=YES
❌ 如果是:
local_enable=NO
本地用户直接登录失败
修改后:
sudo systemctl restart vsftpd
FTP 用户家目录不能过于开放:
chmod 755 /home/用户名
❌ 错误示例:
chmod 777 /home/用户名
vsftpd 会拒绝登录
症状:
解决:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
防火墙放行:
sudo ufw allow 30000:31000/tcp
sudo ufw allow 21/tcp
若你用匿名:
anonymous_enable=YES
并且目录:
/var/ftp
权限不能写
sudo tail -f /var/log/vsftpd.log
或
journalctl -u vsftpd
常见错误:
refusedlogin failedpermission denied如果你愿意,可以告诉我:
/etc/vsftpd.conf 内容我可以直接帮你精准定位并改好配置。