在 CentOS 上使用 FileZilla 启用 SSL 加密
一、先确认你的目标
- 使用 SFTP(基于 SSH):在 FileZilla 选择 SFTP - SSH File Transfer Protocol,端口 22,无需额外 SSL 配置,只要服务器开启 SSH 即可。适合大多数场景,安全性与易用性更好。若走本机端口转发,可先建立 SSH 隧道再连本地端口。
- 使用 FTP over TLS/SSL(FTPS,显式):在 FileZilla 选择 FTP - 文件传输协议,加密选 要求显式 FTP over TLS,端口 21。服务器需配置 vsftpd 并启用 TLS。若服务器在 NAT/防火墙后,还需配置被动端口范围并放行对应端口。
二、服务器端配置 vsftpd 启用 TLS(用于 FileZilla 的“显式 FTP over TLS”)
- 安装与证书
- 安装 vsftpd:sudo yum install -y vsftpd
- 生成自签名证书(示例有效期 365 天):
sudo mkdir -p /etc/ssl/private
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048
-keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
- 核心配置 /etc/vsftpd/vsftpd.conf(示例为“显式 FTPS”)
- 启用并限制协议
- ssl_enable=YES
- ssl_tlsv1_2=YES
- ssl_sslv2=NO
- ssl_sslv3=NO
- 指定证书与密钥
- rsa_cert_file=/etc/ssl/private/vsftpd.pem
- rsa_private_key_file=/etc/ssl/private/vsftpd.pem
- 强制加密与算法
- allow_anon_ssl=NO
- force_local_data_ssl=YES
- force_local_logins_ssl=YES
- require_ssl_reuse=NO
- ssl_ciphers=HIGH
- 被动模式端口范围(示例 40000-50000)
- pasv_enable=YES
- pasv_min_port=40000
- pasv_max_port=50000
- 防火墙放行
- 放行控制与被动端口:
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=990/tcp
sudo firewall-cmd --permanent --add-port=40000-50000/tcp
sudo firewall-cmd --reload
- 重启服务
- sudo systemctl restart vsftpd
- sudo systemctl enable vsftpd
以上为 vsftpd 启用 TLS 的最小可用配置;若你使用“隐式 FTPS”,通常改用端口 990 并在客户端选择“隐式”模式,但显式模式更通用。
三、FileZilla 客户端连接设置
- SFTP(推荐)
- 协议:SFTP - SSH File Transfer Protocol
- 主机:服务器 IP/域名
- 端口:22
- 登录类型:正常,输入系统用户名与密码(或密钥)
- 无需额外 SSL/TLS 设置
- FTP over TLS/SSL(显式)
- 协议:FTP - 文件传输协议
- 加密:要求显式 FTP over TLS
- 主机:服务器 IP/域名
- 端口:21
- 登录类型:正常,输入用户名与密码
- 首次连接会弹出证书指纹确认,核对后接受即可
- 端口转发示例(可选)
- 建立 SSH 隧道:ssh -L 10022:localhost:21 username@your_server_ip
- FileZilla 连接:主机 localhost,端口 10022,协议 FTP,加密 要求显式 FTP over TLS
以上站点管理器配置与隧道方式可直接用于生产连接。
四、常见问题与排查
- 连接被拒或数据通道不通
- 核对防火墙已放行 21、990 与控制通道外的被动端口范围(如 40000-50000);云主机还需在安全组放行相同端口。
- 证书不受信任
- 自签名证书首次连接会提示,确认指纹无误后选择“始终信任此证书”以保存。生产环境建议使用受信任 CA 签发的证书。
- 被动模式失败(尤其 NAT/云主机)
- 确认 vsftpd 配置了 pasv_min_port/pasv_max_port,并在防火墙/网关做端口映射;FileZilla 站点设置中可保持默认被动模式。
- 明文登录被拒
- 已配置 force_local_logins_ssl=YES 与 force_local_data_ssl=YES 时,必须使用 TLS;使用普通 FTP 客户端或明文模式会被拒绝。
- 选择协议建议
- 若不受限于必须使用 FTP,优先选择 SFTP(端口 22),部署与维护更简单,穿越防火墙/NAT 更可靠。