温馨提示×

debian ftpserver为何传文件失败

小樊
85
2026-09-12 17:29:47
栏目: 智能运维

在 Debian 上搭的 FTP 服务器传文件失败,原因很多,下面按最常见原因 → 排查方法给你一个清单,你可以逐条对照。


一、最常见原因

1️⃣ 被动模式(PASV)被防火墙/云安全组拦截

这是 90% 失败的原因

现象:

  • 能登录
  • ls 卡住
  • 上传/下载直接失败

原因:

  • FTP 被动模式需要额外端口范围
  • Debian 防火墙或云服务器安全组没放行

✅ 解决(以 vsftpd 为例):

sudo nano /etc/vsftpd.conf

确保有:

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

放行端口:

sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp

云服务器还要在安全组放行这些端口。


2️⃣ 用户没有写权限

现象:

  • 登录成功
  • 上传提示 550 Permission denied

检查:

ls -ld /home/ftpuser

解决:

sudo chown ftpuser:ftpuser /home/ftpuser
sudo chmod 755 /home/ftpuser

vsftpd 还要:

write_enable=YES

3️⃣ SELinux / AppArmor 限制(Debian 一般是 AppArmor)

现象:

  • 日志里有 denied

检查:

sudo aa-status

可临时测试:

sudo systemctl stop apparmor

(生产不建议长期关)


4️⃣ chroot 配置错误

现象:

  • 登录后无法访问目录
  • 上传直接失败

vsftpd 常见配置:

chroot_local_user=YES
allow_writeable_chroot=YES

否则会报:

500 OOPS: vsftpd: refusing to run with writable root inside chroot

5️⃣ 使用 root 登录被拒绝

vsftpd 默认禁止 root:

userlist_deny=YES

root 在 /etc/ftpusers 中

✅ 用普通用户


6️⃣ 磁盘满 / inode 满

df -h
df -i

二、如何快速定位问题

看日志(最重要)

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

用命令行 FTP 测试

ftp localhost

看具体报错码(550 / 425 / 530)


三、如果你愿意,我可以更精准帮你

请告诉我:

  1. 用的什么 FTP 服务(vsftpd / proftpd / pure-ftpd)
  2. 报错信息(完整一点)
  3. 本地还是云服务器
  4. 主动还是被动模式

我可以直接给你对应配置文件和命令。

0 踩