解决 Linux FTP 服务器报错,需要先定位具体错误,不同报错原因差别很大。下面我按常见场景 + 排查步骤 + 解决方案给你一个通用排查指南,你可以对照使用。
常见 FTP 服务有:
先确认:
ps -ef | grep ftp
或
systemctl status vsftpd
Connection refused530 Login incorrectLogin failed✅ 服务是否启动
systemctl status vsftpd
✅ 端口是否监听
netstat -lntp | grep 21
✅ 防火墙是否放行
firewall-cmd --list-ports
# 或
iptables -L -n
✅ SELinux 是否阻止
getenforce
如果是 Enforcing,可临时关闭测试:
setenforce 0
✅ 用户名 / 密码是否正确
cat /etc/passwd | grep ftpuser
✅ 检查用户是否允许登录:
grep ftpuser /etc/passwd
✅ 检查 vsftpd 配置:
vim /etc/vsftpd/vsftpd.conf
重点检查:
local_enable=YES
write_enable=YES
✅ 检查 PAM:
vim /etc/pam.d/vsftpd
确保没有错误限制
550 Permission denied553 Could not create file✅ 目录权限:
chown -R ftpuser:ftpuser /data/ftp
chmod 755 /data/ftp
✅ vsftpd 配置:
write_enable=YES
local_umask=022
✅ 是否开启 chroot:
chroot_local_user=YES
allow_writeable_chroot=YES
425 Failed to establish connectionEntering Passive Mode✅ 开启被动模式:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
✅ 防火墙放行端口:
firewall-cmd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload
getsebool -a | grep ftp
setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on
# 1. 看服务状态
systemctl status vsftpd
# 2. 看日志
journalctl -u vsftpd -f
# 或
tail -f /var/log/messages
tail -f /var/log/secure
# 3. 测试连接
ftp localhost
你可以直接把报错信息原样贴出来,例如:
/var/log/securevsftpd.conf 内容我可以直接帮你定位是哪一行配置的问题 ✅