温馨提示×

ubuntu ftpserver有哪些坑

小樊
54
2026-09-02 12:19:27
栏目: 智能运维

在 Ubuntu 上搭建 FTP Server(如 vsftpd、proftpd) 时,有不少“坑”是新手很容易踩的,下面按常见问题 → 原因 → 解决/建议来总结。


一、vsftpd 常见坑(最常用)

1️⃣ 防火墙 / 端口不通

现象

  • 本地能连,外网连不上
  • 登录超时

原因

  • FTP 使用 21(控制)+ 随机端口(数据)
  • UFW / iptables 没放行

解决

sudo ufw allow 21/tcp
sudo ufw allow 20/tcp
# 被动模式端口范围也要放行

2️⃣ 被动模式(PASV)配置错误

现象

  • 能登录,但列目录卡住
  • FileZilla 报 Entering Passive Mode 失败

原因

  • 未配置 pasv_address
  • 云服务器没映射公网 IP

vsftpd 正确配置示例

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=你的公网IP

并放行端口:

sudo ufw allow 30000:31000/tcp

3️⃣ 用户无法登录

现象

  • 530 Login incorrect
  • 用户存在但登不上

常见原因

  • 用户被限制了 shell(/sbin/nologin)
  • PAM 限制
  • 家目录权限不对

检查

grep ftp /etc/passwd

vsftpd 默认不允许 nologin 用户登录(除非配置)

解决

local_enable=YES

或给用户合法 shell:

sudo usermod -s /bin/bash ftpuser

4️⃣ 上传失败 / 权限不足

现象

  • 能下载不能上传
  • 550 Permission denied

原因

  • 目录权限不对
  • vsftpd 配置只读

解决

write_enable=YES

目录权限:

sudo chown ftpuser:ftpuser /srv/ftp
sudo chmod 755 /srv/ftp

5️⃣ chroot 限制导致登录失败

现象

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

原因

  • chroot 根目录可写(安全限制)

解决

allow_writeable_chroot=YES

或把家目录改为只读,子目录可写


6️⃣ SELinux(Ubuntu 一般没有,但容器/定制系统有)

  • Ubuntu 默认无 SELinux
  • 如果是 CentOS 思维容易误判

二、Ubuntu 特有坑

7️⃣ snap 版 vsftpd(坑王)

现象

  • 配置文件不生效
  • 路径奇怪

原因

  • 用了 snap install vsftpd

建议

sudo apt remove vsftpd
sudo apt install vsftpd

8️⃣ systemd 启动失败但无明显报错

journalctl -u vsftpd

常见:

  • 配置文件语法错误
  • 端口被占用

三、安全 & 使用建议(很重要)

❌ 不要用 FTP(明文)

  • 账号密码明文传输
  • 容易被抓包

✅ 推荐

  • SFTP(基于 SSH)
  • FTPS(FTP over SSL)

SFTP 更省心(强烈推荐)

# 直接用 ssh 用户
sftp user@ip

无需额外服务,防火墙只要 22


四、最小可用 vsftpd 配置(示例)

listen=YES
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
pasv_address=公网IP

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

  • ✅ Ubuntu 版本
  • ✅ 云服务器还是本地
  • ✅ 用 vsftpd / proftpd / pure-ftpd
  • ✅ 具体报错信息

我可以直接帮你“排雷 + 给完整配置”。

0 踩