温馨提示×

linux ftpserver怎排错

小樊
34
2026-09-29 09:11:39
栏目: 智能运维

在 Linux 上搭建或排查 FTP 服务器(如 vsftpd、proftpd、pure-ftpd 等)时,通常可以按下面这套思路来“排错”。下面以最常见的 vsftpd 为主,也兼顾通用问题。


一、先确认服务是否运行

systemctl status vsftpd
# 或
service vsftpd status

没启动就启动:

systemctl start vsftpd
systemctl enable vsftpd

二、检查端口与监听

FTP 默认端口:

  • 21:控制端口
  • 20:主动模式数据端口
  • 被动模式:配置范围内的随机端口

查看监听:

netstat -tunlp | grep :21
# 或
ss -tunlp | grep :21

如果没监听:

  • 服务没启动
  • 配置里 listen=NO 或端口被改

三、检查防火墙(非常常见)

firewalld

firewall-cmd --list-all

放行 FTP:

firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload

iptables

iptables -L -n

被动模式还需放行被动端口范围(见后文)。


四、SELinux(Linux 排错黑洞)

查看状态:

getenforce

如果是 Enforcing,常导致:

  • 无法登录
  • 能登录但无法上传/列出目录

常见修复:

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

查看 FTP 相关布尔值:

getsebool -a | grep ftp

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

主配置文件:

/etc/vsftpd/vsftpd.conf

常见关键项

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

改完重启:

systemctl restart vsftpd

六、被动模式(PASV)问题(最常见)

现象

  • 能登录
  • 无法列目录
  • 卡在 “Entering Passive Mode”

解决

  1. 配置被动端口
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
  1. 防火墙放行
firewall-cmd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload
  1. 如果有公网/NAT:
pasv_address=公网IP

七、用户与权限问题

用户不能登录

  • 是否在 /etc/vsftpd/user_list 或 ftpusers 中
  • 是否禁止 shell 登录但允许 FTP

查看:

cat /etc/vsftpd/ftpusers
cat /etc/vsftpd/user_list

无法上传

  • 目录权限
ls -ld /home/ftpuser
  • 配置是否 write_enable=YES

八、日志排查(非常重要)

vsftpd 日志

/var/log/vsftpd.log
/var/log/messages
/var/log/secure

打开详细日志:

xferlog_enable=YES
log_ftp_protocol=YES

九、客户端测试方式

命令行

ftp localhost

被动模式测试

ftp -p localhost

抓包(高级)

tcpdump -i any port 21

十、快速自检清单 ✅

  • [ ] 服务已启动
  • [ ] 21 端口在监听
  • [ ] 防火墙放行 21 + 被动端口
  • [ ] SELinux 已配置
  • [ ] 用户不在禁止列表
  • [ ] 目录权限正确
  • [ ] 日志无报错

如果你愿意,可以告诉我:

  • 用的 哪种 FTP 服务(vsftpd / proftpd / pure-ftpd)
  • 是 内网还是云服务器
  • 具体 报错信息或现象

我可以直接帮你定位问题。

0 踩