Linux 下 FTP 服务器登录失败的原因很多,下面按最常见原因 → 排查思路 → 解决办法给你一个系统清单,你可以对照自己的情况逐一排查。
排查:
grep ftpuser /etc/passwd
passwd ftpuser
常见服务:
检查服务状态:
systemctl status vsftpd
启动:
systemctl start vsftpd
systemctl enable vsftpd
FTP 使用:
检查端口:
netstat -tunlp | grep 21
开放防火墙(firewalld):
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
云服务器还要检查安全组规则
即使配置正确,SELinux 也可能阻止登录
查看:
getenforce
临时关闭测试:
setenforce 0
永久解决(推荐):
setsebool -P ftp_home_dir on
/etc/vsftpd/vsftpd.conf✅ 允许本地用户登录:
local_enable=YES
write_enable=YES
❌ 以下会导致登录失败:
anonymous_enable=NO
# 但用户不是匿名用户却用匿名方式登录
cat /etc/vsftpd/ftpusers
cat /etc/vsftpd/user_list
FTP 用户必须对家目录有正确权限
错误示例:
drwxr-x--- root root /home/ftpuser
修正:
chown ftpuser:ftpuser /home/ftpuser
chmod 700 /home/ftpuser
客户端连不上 → 表现为“登录失败 / 卡住”
vsftpd 示例:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
防火墙放行这些端口。
FTP 用户 shell 不能是 /sbin/nologin 如果被限制
grep ftpuser /etc/passwd
若需要:
usermod -s /bin/bash ftpuser
tail -f /var/log/secure
tail -f /var/log/messages
或 vsftpd 专用:
tail -f /var/log/vsftpd.log
| 现象 | 可能原因 |
|---|---|
| 530 Login incorrect | 密码/用户/ftpusers |
| 500 OOPS | 权限/SELinux |
| 331 后卡住 | 被动模式 |
| 连接被拒绝 | 服务未启动/防火墙 |
| 能连不能列目录 | PASV 端口 |
你可以贴出:
/etc/vsftpd/vsftpd.conf 内容我可以直接告诉你哪一行配置有问题。