温馨提示×

FTPServer在Linux上的故障排查

小樊
33
2026-01-03 15:53:10
栏目: 智能运维

Linux 上 FTPServer 故障排查实战手册

一 快速定位流程

  • 服务状态与自启
    • 执行:systemctl status vsftpd 查看运行状态与最近报错;若未运行,执行:systemctl start vsftpdsystemctl enable vsftpd 设置开机自启。
  • 配置语法与关键项
    • 配置文件:/etc/vsftpd/vsftpd.conf。常用关键项:anonymous_enable=NOchroot_local_user=YESpasv_enable=YESpasv_min_port=40000pasv_max_port=50000。修改后执行:systemctl restart vsftpd 使配置生效。
  • 日志优先
    • 认证与会话:tail -f /var/log/secure
    • 传输行为:tail -f /var/log/xferlog
    • vsftpd 专用日志(若启用):tail -f /var/log/vsftpd.log
  • 连通性与端口
    • 连通性:pingtraceroute 排查网络路径。
    • 端口占用:ss -lntp | grep ':21\|:990',确认 21(命令端口)与 990(FTPS 控制端口)未被占用;被动模式还需确认 40000–50000 范围未被占用且已放行。

二 常见故障对照表

症状 高频原因 快速验证 修复建议
530 Login incorrect 用户名/密码错误;PAM 配置异常;用户家目录不可访问 查看 /var/log/secure 的 PAM 报错;尝试本地登录 核对凭据;检查 /etc/pam.d/vsftpd;确保用户家目录存在且权限正确
500 Illegal PORT command 主动模式被防火墙/NAT 阻断;客户端 IP 与服务器看到的不一致 客户端改用被动模式;抓包或日志观察 PORT 命令 启用被动模式并设置 pasv_min_port/pasv_max_port,在防火墙放行该端口段
无法打开远程文件夹 被动模式端口未放行;客户端在 NAT 后未正确解析服务器公网 IP 客户端切换主动/被动对比;查看服务器返回被动 IP vsftpd.conf 设置 pasv_address=服务器公网IP;放行被动端口段
550 Permission denied 目录权限/所有权错误;chroot 后根目录不可写 ls -ld 检查目录;查看 secure 权限拒绝日志 调整目录属主属组与权限(如文件 644、目录 755),必要时放宽 chroot 目录写权限
连接超时/被拒绝 防火墙未放行 21/990 或被动端口段;服务未启动 ss -lntp 检查端口;firewall-cmd --list-portsiptables -L -n 放行 21/990 与被动端口段;确保服务已启动并开机自启

三 防火墙与 SELinux 设置

  • firewalld(推荐)
    • 放行命令:firewall-cmd --zone=public --add-port=21/tcp --permanentfirewall-cmd --zone=public --add-port=990/tcp --permanentfirewall-cmd --zone=public --add-port=40000-50000/tcp --permanent,随后 firewall-cmd --reload
  • iptables(传统)
    • 放行命令:iptables -A INPUT -p tcp --dport 21 -j ACCEPTiptables -A INPUT -p tcp --dport 990 -j ACCEPTiptables -A INPUT -p tcp --dport 40000:50000 -j ACCEPT,按需保存与重启防火墙服务。
  • SELinux
    • 临时测试:setenforce 0(仅测试用途)。
    • 常用策略:setsebool -P ftp_home_dir 1(允许访问用户家目录);若自定义目录,使用 semanage fcontextrestorecon 设置正确的文件上下文后恢复。

四 被动模式与 FTPS 配置要点

  • 被动模式端口范围
    • /etc/vsftpd/vsftpd.conf 中设置:pasv_enable=YESpasv_min_port=40000pasv_max_port=50000,并在防火墙放行该范围;客户端与服务器之间任何 NAT/云安全组 也需放通。
  • 公网环境下的被动地址
    • 服务器位于 NAT 后时,设置 pasv_address=服务器公网IP,避免客户端收到内网地址导致数据通道失败。
  • 日志与审计
    • 建议开启:xferlog_enable=YESxferlog_file=/var/log/xferlogdual_log_enable=YESvsftpd_log_file=/var/log/vsftpd.log,便于定位登录与传输问题。
  • 主动模式注意事项
    • 主动模式需要服务器主动连接到客户端高位端口,通常受客户端防火墙限制;若必须使用,确保服务器到客户端方向的相应端口段可达,或优先采用被动模式。

五 一键健康检查清单

  • 服务:systemctl is-active vsftpd 应为 activesystemctl is-enabled vsftpd 应为 enabled
  • 端口:ss -lntp | egrep ':(21|990|40000-50000)' 能看到监听。
  • 防火墙:firewall-cmd --list-portsiptables -L -n 包含 21/tcp、990/tcp、40000-50000/tcp
  • SELinux:getsebool ftp_home_dir 应为 on;自定义目录上下文正确。
  • 日志:tail -n50 /var/log/secure /var/log/xferlog 无近期致命错误。
  • 权限:FTP 根目录与子目录属主/权限合理(如文件 644、目录 755),chroot 目录可访问。
  • 磁盘:df -h 确认可用空间充足,避免因磁盘满导致写入失败。

0