Ubuntu 上的 vsftpd 与 FileZilla 兼容性说明
在 Ubuntu 上,vsftpd 与 FileZilla 的兼容性总体良好,支持明文 FTP、加密 FTPS(FTP over SSL/TLS) 以及与 SFTP(基于 SSH) 的互通。需要注意的是,FTP 的控制通道使用 21/TCP,数据通道在主动模式由服务器使用 20/TCP 连接客户端,在被动模式由客户端连接服务器的被动端口范围;若启用 FTPS,通常还会使用 990/TCP。在复杂网络(NAT/防火墙)环境下,优先选择 被动模式 或直接使用 SFTP 更省心。
推荐配置与互通要点
- 安装与基础配置
- 安装:sudo apt update && sudo apt install vsftpd
- 关键参数:local_enable=YES、write_enable=YES、anonymous_enable=NO、chroot_local_user=YES
- 生效:sudo systemctl restart vsftpd
- 加密传输(FTPS)
- 启用:ssl_enable=YES、force_local_logins_ssl=YES、force_local_data_ssl=YES
- 证书:rsa_cert_file=/etc/ssl/private/vsftpd.pem、rsa_private_key_file=/etc/ssl/private/vsftpd.pem
- 端口:开放 21/TCP 与 990/TCP(若仅显式指定 FTPS,通常走 990)
- 被动模式端口范围(NAT/云环境强烈建议)
- 配置:pasv_min_port=30000、pasv_max_port=31000
- 防火墙放行:sudo ufw allow 30000:31000/tcp
- 字符集
- 如遇中文乱码,在 vsftpd 配置中设置字符集为 UTF-8,并在 FileZilla 站点管理器中将字符集设为“强制 UTF-8”
- 常见文件与目录权限
- 确保登录用户对家目录具备读写权限(如:chown/chmod 合理设置),避免因权限不足导致上传/创建目录失败。
FileZilla 站点配置示例
- FTP(明文)
- 协议:FTP - 文件传输协议
- 主机:服务器 IP/域名
- 端口:21
- 加密:仅使用普通 FTP(不安全)
- 登录类型:正常,填写用户名/密码
- 传输模式:优先 被动模式(在有防火墙/NAT 时更稳)
- FTPS(推荐)
- 协议:FTP over SSL/TLS(显式) 或 FTP over SSL/TLS(隐式)
- 端口:显式一般为 21;隐式通常为 990
- 加密:要求 SSL/TLS
- 登录类型:正常
- SFTP(与 vsftpd 无关,走 SSH)
- 协议:SFTP - SSH 文件传输协议
- 端口:22
- 登录类型:正常,填写系统用户名/密码或私钥。
常见故障排查清单
- 无法连接/被拒绝
- 检查服务状态:sudo systemctl status vsftpd
- 检查端口占用:ss -lntp | grep :21
- 防火墙放行:sudo ufw allow 21/tcp;FTPS 加 990/tcp;被动模式加 30000:31000/tcp
- 530 Login incorrect
- 核对用户名/密码;检查 PAM 与 vsftpd 配置(如 pam_service_name 等);必要时查看日志定位认证问题
- 能登录但列目录/上传失败
- 目录权限与属主是否正确;是否启用 write_enable=YES;是否被 chroot 限制且目录不可写
- 数据连接超时/传输卡住
- 在客户端切换 主动/被动 模式;在服务器启用并放行 被动端口范围;NAT/云主机需正确配置被动地址或回退 SFTP
- 中文乱码
- vsftpd 启用 UTF-8,FileZilla 站点字符集设为 强制 UTF-8。