温馨提示×

ubuntu ftpserver为何拒绝

小樊
43
2026-09-14 16:19:32
栏目: 智能运维

在 Ubuntu 上搭建 FTP 服务器(常见为 vsftpd)时,“拒绝连接 / 登录被拒”是很常见的现象,原因通常集中在以下几类。你可以逐项对照排查。


一、服务本身没起来或被防火墙拦截

1. FTP 服务未运行

systemctl status vsftpd

若未运行:

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

2. 防火墙未放行 FTP

sudo ufw status

若开启,需放行:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp

如果是 被动模式(PASV),还需放行被动端口范围(见后文)。


二、vsftpd 配置导致拒绝(最常见)

1. 禁止匿名但用户不存在 / 密码错

anonymous_enable=NO
local_enable=YES

确保:

  • 使用的是系统用户
  • 用户名密码正确

2. 用户被 chroot 限制但目录权限不对(典型错误)

chroot_local_user=YES

此时用户主目录 不能可写,否则 vsftpd 会拒绝登录。

解决方法(推荐):

sudo chmod a-w /home/username
sudo mkdir /home/username/ftp
sudo chown username:username /home/username/ftp

或在配置中加:

allow_writeable_chroot=YES

三、PAM / Shell 限制

1. 用户 shell 不允许登录

grep username /etc/passwd

若 shell 是 /usr/sbin/nologin/bin/false,FTP 会被拒。

可改为:

sudo usermod -s /bin/bash username

或确保 vsftpd 不依赖 shell(部分版本需要)。


四、SELinux(Ubuntu 一般没开,但可确认)

Ubuntu 默认不使用 SELinux,可忽略。


五、被动模式(PASV)配置错误(云服务器高发)

编辑 /etc/vsftpd.conf

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

然后:

sudo ufw allow 30000:31000/tcp

六、常见错误日志位置(非常重要)

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

日志通常会直接写明拒绝原因。


七、快速自检清单

  • [ ] vsftpd 是否已启动
  • [ ] 21 端口是否通
  • [ ] 用户名 / 密码是否正确
  • [ ] 是否 chroot + 目录可写冲突
  • [ ] 被动端口是否放行
  • [ ] 是否云服务器安全组未放开

如果你愿意,可以把 具体报错信息(客户端提示 + /var/log/vsftpd.log)贴出来,我可以直接帮你定位是哪一条原因。

0