vsftpd启动失败主因是配置冲突:布尔值错误、anonymous_enable与local_enable矛盾、chroot_local_user未配allow_writeable_chroot、非ascii注释解析失败;sftp需用openssh而非vsftpd;selinux、挂载选项、防火墙pasv端口及nat设置也常致故障。

vsftpd 启动失败:检查 /etc/vsftpd.conf 里这三行是否冲突
很多人在改完配置后执行 systemctl start vsftpd 报错退出,日志里常见 500 OOPS: bad bool value in config file 或直接静默失败。根本原因常是布尔值写法不一致,或关键开关互相矛盾。
实操建议:
-
anonymous_enable=YES和local_enable=NO同时开,会导致本地用户无法登录但匿名又没配好目录权限,服务拒绝启动 -
chroot_local_user=YES必须搭配allow_writeable_chroot=NO(或设为YES但需确保用户根目录不可写),否则 vsftpd 会因安全策略拒绝加载 - 注释掉的行如果含空格或中文字符(比如
# 禁用匿名),某些旧版 vsftpd 会解析失败——删掉所有非 ASCII 注释更稳妥
SFTP 不是 FTP over SSL,别在 vsftpd 里配 ssl_enable=YES
搜 “Linux SFTP 配置” 很多人误以为只要打开 vsftpd 的 SSL 就能用 SFTP,结果用 FileZilla 连 sftp:// 协议一直超时。SFTP 是 SSH 子系统,和 FTP 完全无关,vsftpd 根本不提供 SFTP 服务。
实操建议:
- 要 SFTP,直接用 OpenSSH 自带的,确认
/etc/ssh/sshd_config中有Subsystem sftp /usr/lib/openssh/sftp-server(新版通常默认存在) - 禁用密码登录?别只关
PasswordAuthentication no,还要确保PubkeyAuthentication yes且用户~/.ssh/authorized_keys权限是600 - 限制 SFTP 用户只能访问某目录?用
ChrootDirectory,但注意该路径必须属 root 且不可写,否则 sshd 启动时会报fatal: bad ownership or modes
用户登录后看不到文件:SELinux 或文件系统挂载选项拦住了
vsftpd 或 SFTP 登录成功,ls 却返回空,或者提示 Permission denied,但 ls -l 显示权限明明正常。大概率是 SELinux 上下文或挂载参数卡了路。
实操建议:
- 检查目录 SELinux 类型:
ls -Z /path/to/ftp-root,如果是default_t而不是public_content_t或sftp_home_t,用chcon -t public_content_t /path/to/ftp-root临时修复 - 若 FTP 根目录在独立磁盘上(如
/mnt/data),检查mount输出是否含noexec、nosuid或nodev——vsftpd 某些模式依赖exec权限,哪怕只是列目录 - 用户主目录在 NFS 或 CIFS 上?SFTP 默认不支持这类远程文件系统做 chroot,vsftpd 则可能因 UID/GID 映射异常导致
getpwuid失败而静默拒访
vsftpd 被防火墙挡住:不只是 21 端口的事
开放了 firewall-cmd --add-port=21/tcp,FTP 客户端仍连不上,或能登录但传文件卡住。这是因为 FTP 主动模式要随机高位端口,而 vsftpd 默认用被动模式(PASV),需要额外放行数据端口段。
实操建议:
- 在
/etc/vsftpd.conf中明确设pasv_min_port=40000和pasv_max_port=40100,再用firewall-cmd --add-port=40000-40100/tcp - 如果用云服务器(如阿里云、AWS),安全组规则必须同步放行 PASV 端口段,光配系统防火墙没用
- 内网穿透或 NAT 后部署?务必加
pasv_address=你的公网IP,否则客户端收到的是内网地址,连不上数据通道
最麻烦的永远是组合问题:比如 SELinux + chroot + NFS 目录 + 自定义 PASV 地址,任意一环没对齐,现象都是“看起来连上了,但什么也干不了”。调的时候别一次改三处,每次只动一个点,用 journalctl -u vsftpd -f 或 tail -f /var/log/secure 看实时报错,比猜快得多。










