温馨提示×

怎样解决Ubuntu FTP报错

小樊
37
2026-08-02 12:28:10
栏目: 智能运维

解决 Ubuntu 上的 FTP 报错,需要先明确具体报错信息。不过大多数问题都集中在 vsftpd(最常见)防火墙/端口权限与 SELinux/AppArmor被动模式 等方面。下面我按常见场景 + 通用排查步骤给你一个系统性的解决方案。


一、先确认你用的是哪种 FTP

Ubuntu 最常见的是 vsftpd,先确认:

dpkg -l | grep ftp

systemctl status vsftpd

二、最常见的 FTP 报错 & 解决方法

1️⃣ 连接被拒绝(Connection refused)

原因

  • FTP 服务未启动
  • 端口被防火墙拦截
  • 监听地址错误

解决

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

检查端口:

ss -antp | grep 21

防火墙放行:

sudo ufw allow 21/tcp
sudo ufw reload

2️⃣ 530 Login incorrect(登录失败)

原因

  • 用户名/密码错误
  • vsftpd 禁止本地用户登录
  • PAM 认证问题

解决

编辑配置:

sudo nano /etc/vsftpd.conf

确认:

local_enable=YES
write_enable=YES

如果仍不行,检查 PAM:

cat /etc/pam.d/vsftpd

测试用户:

ftp localhost

3️⃣ 500 OOPS: cannot change directory

原因

  • 用户家目录权限不对
  • AppArmor 限制

解决

修复权限:

sudo chmod 755 /home/username

临时关闭 AppArmor 测试:

sudo systemctl stop apparmor

4️⃣ 被动模式失败(Passive mode error)

典型报错

  • 卡在 LIST
  • 超时
  • Entering Passive Mode 后失败

解决(推荐)

编辑 /etc/vsftpd.conf

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

防火墙放行:

sudo ufw allow 30000:31000/tcp

重启:

sudo systemctl restart vsftpd

5️⃣ 上传/下载权限不足(550 / 553)

解决

write_enable=YES
local_umask=022

目录权限:

sudo chown -R ftpuser:ftpuser /data/ftp
sudo chmod -R 755 /data/ftp

三、推荐的安全配置(vsftpd)

listen=NO
listen_ipv6=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

四、排查 FTP 的通用“万能步骤”

✅ 1. 查看日志

sudo tail -f /var/log/vsftpd.log

如果没有:

journalctl -u vsftpd -f

✅ 2. 本地测试

ftp localhost

✅ 3. 检查端口是否通

telnet 服务器IP 21

五、如果你愿意,我可以进一步帮你

你可以直接把完整报错信息发给我,例如:

  • 客户端报错截图
  • 530 / 500 / 550 等错误码
  • 你用的是 vsftpd / pure-ftpd / proftpd
  • Ubuntu 版本(20.04 / 22.04 / 24.04)

我可以针对你的具体错误一步步给你精确解决方案

0