vsftpd(Very Secure FTP Daemon)在 Linux 上“连不上”是很常见的问题,原因通常集中在服务状态、防火墙、SELinux、配置、被动模式、账号权限这几类。下面按排查顺序给你一个清单:
systemctl status vsftpd
或
ps aux | grep vsftpd
如果没运行:
systemctl start vsftpd
systemctl enable vsftpd
netstat -tunlp | grep ftp
# 或
ss -tunlp | grep ftp
常见情况:
firewall-cmd --list-all
开放 FTP:
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
iptables -L -n
确保 21 端口放行。
很多“能连但不能列目录”的情况就是被动模式。
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
防火墙还要放这些端口:
firewall-cmd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload
getenforce
如果是 Enforcing:
setsebool -P ftpd_full_access on
或临时验证:
setenforce 0
local_enable=YES
write_enable=YES
anonymous_enable=NO
chroot_local_user=YES
allow_writeable_chroot=YES
id ftpuserchmod 755 /home/ftpuser
| 现象 | 可能原因 |
|---|---|
| 连接超时 | 防火墙 / 服务没起 |
| 拒绝连接 | 端口未监听 |
| 能登录不能列目录 | 被动模式 |
| 530 Login incorrect | 密码 / PAM |
| 500 OOPS | chroot 权限问题 |
ftp localhost
本机能连 → 问题在网络/防火墙
本机也不能连 → 配置或服务问题
如果你愿意,可以把下面信息发我,我可以直接帮你定位:
vsftpd.conf 关键配置systemctl status vsftpd 输出我可以一步一步帮你修到能连。