温馨提示×

怎样排查linux ftpserver故障

小樊
36
2026-10-02 07:16:44
栏目: 智能运维

排查 Linux FTP 服务器故障,建议按**“网络 → 服务 → 配置 → 权限 → 日志”**的顺序系统化排查。下面以常见的 vsftpd 为例(也适用于 proftpd / pure-ftpd 思路)。


一、确认 FTP 服务是否运行

systemctl status vsftpd
# 或
ps -ef | grep vsftpd
  • 未运行:
systemctl start vsftpd
systemctl enable vsftpd

二、检查端口与监听

netstat -tunlp | grep :21
# 或
ss -tunlp | grep :21
  • 无监听:检查配置文件中 listen=YES
  • 被动模式端口(如 30000-31000)是否开放

三、网络与防火墙

1. 防火墙

iptables -L -n
# 或
firewall-cmd --list-all

开放端口:

firewall-cmd --add-port=21/tcp --permanent
firewall-cwd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload

2. 云服务器安全组

  • 放行 21 及被动端口范围

3. 本机测试

ftp localhost
  • 能连:问题在外部网络
  • 不能连:服务或配置问题

四、检查 FTP 配置文件(vsftpd)

常见文件:

/etc/vsftpd/vsftpd.conf

重点参数:

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
pasv_min_port=30000
pasv_max_port=31000

修改后重启:

systemctl restart vsftpd

五、用户与权限问题

1. 用户是否存在

id ftpuser

2. 家目录权限

ls -ld /home/ftpuser
  • 属主正确
  • 不能被其他用户写(chroot 安全要求)

3. SELinux(常见坑)

getenforce

若为 Enforcing:

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

六、查看日志(最关键)

tail -f /var/log/messages
# 或
tail -f /var/log/vsftpd.log
# 或
journalctl -u vsftpd -f

常见错误:

  • 530 Login incorrect → 用户名/密码或 PAM 问题
  • 500 OOPS: chroot → 目录权限错误
  • 425 Failed to establish connection → 被动端口未开放

七、客户端连接测试

ftp ftp.example.com

或:

lftp ftp://user:pass@host

八、快速自查清单

✅ 服务是否启动
✅ 21 端口是否监听
✅ 防火墙/安全组是否放行
✅ 被动端口是否配置并开放
✅ 用户权限与目录权限
✅ SELinux 状态
✅ 日志报错信息


如果你能贴出:

  • FTP 软件(vsftpd / proftpd / pure-ftpd)
  • 报错信息
  • 主动/被动模式

我可以帮你精准定位问题。

0 踩