在 CentOS 上搭建 FTP Server(通常是 vsftpd) 时,登录报错的原因非常多,下面按最常见原因 → 排查方法 → 解决办法给你一个系统梳理。
现象
排查
getenforce
systemctl status firewalld
解决
# 关闭 SELinux(测试用)
setenforce 0
# 或允许 FTP
setsebool -P ftpd_full_access on
# 防火墙放行
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
常见错误配置
anonymous_enable=NO
local_enable=NO ❌
write_enable=NO
正确基础配置(本地用户登录)
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
重启服务:
systemctl restart vsftpd
现象
检查
grep ftpuser /etc/passwd
如果用户 shell 是:
/sbin/nologin
但 vsftpd 没允许,就会失败。
解决
usermod -s /bin/bash ftpuser
或
# vsftpd.conf
check_shell=NO
错误日志
pam_unix(vsftpd:auth): authentication failure
解决 编辑:
vi /etc/pam.d/vsftpd
注释掉:
# auth required pam_shells.so
要求
错误
drwxrwxrwx /home/ftpuser
解决
chmod 755 /home/ftpuser
mkdir /home/ftpuser/upload
chown ftpuser:ftpuser /home/ftpuser/upload
现象
解决
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
防火墙:
firewall-cmd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload
tail -f /var/log/secure
tail -f /var/log/messages
ftp localhost
| 错误码 | 含义 |
|---|---|
| 530 | 登录失败(用户/密码/PAM) |
| 500 | 权限/配置错误 |
| 550 | 目录不可写 |
| 425 | Passive 模式失败 |
你可以直接贴出:
vsftpd.conf我可以一步一步帮你改到能登为止。