FTP、FTPS 和 SFTP 的区别
一、基本定义
| 协议 | 全称 | 说明 |
|---|---|---|
| FTP | File Transfer Protocol | 最早的文件传输协议(1971年),无加密,明文传输 |
| FTPS | FTP Secure(或 FTP over SSL/TLS) | 在 FTP 基础上增加 SSL/TLS 加密层,支持加密控制和数据通道 |
| SFTP | SSH File Transfer Protocol(注意:不是 "Secure FTP") | 基于 SSH 协议 的文件传输子系统,完全独立于 FTP,所有通信通过加密 SSH 通道进行 |
常见误区:
- SFTP ≠ Secure FTP("Secure FTP" 是某些厂商对 FTPS 的营销叫法)
- SFTP 与 FTP 完全无关,只是名字相似
二、核心对比表
| 特性 | FTP | FTPS | SFTP |
|---|---|---|---|
| 是否加密 | 明文(用户名、密码、数据均可见) | 可选加密(显式/隐式 TLS) | 强制全程加密 |
| 底层协议 | 独立应用层协议(基于 TCP) | FTP + SSL/TLS | SSH 协议的一部分 |
| 默认端口 | 控制:21 数据:20(主动)或动态(被动) | 控制:990(隐式)或 21(显式) 数据:动态 | 22(复用 SSH 端口) |
| 连接方式 | 双通道(控制 + 数据) | 双通道 + TLS 握手 | 单通道(所有操作在 SSH 会话中) |
| 防火墙/NAT 友好性 | 差(尤其主动模式,常用被动模式) | 较差(需开放多端口) | 好(仅需 22 端口) |
| 身份认证 | 用户名/密码(明文) | 密码 + 可选客户端证书 | 密码 / SSH 密钥 / 双因素 |
| 文件操作能力 | 基础(上传、下载、列表) | 同 FTP | 更丰富(权限修改、符号链接、断点续传等) |
| 标准化组织 | IETF (RFC 959) | IETF (RFC 4217) | IETF (SSH 协议扩展,非独立 RFC) |
| 典型客户端支持 | 所有系统原生支持 | FileZilla、WinSCP、curl | OpenSSH、WinSCP、scp/sftp 命令 |
三、安全性详解
1. FTP
- 所有数据(包括账号密码)以明文在网络中传输
- 极易被中间人攻击(MITM)、嗅探
- 不适用于任何敏感数据传输
- 在部署时需要开通多个端口:控制连接的21端口,数据连接的多个端口(常用50000之后的100个端口,如:50000-50100,我遇到也有开10个端口的FTP)
2. FTPS
- 分两种模式:
- 显式 FTPS(FTPES) :客户端先连 21 端口,再协商升级为 TLS(
AUTH TLS命令) - 隐式 FTPS:直接连 990 端口,强制 TLS(已基本淘汰)
- 显式 FTPS(FTPES) :客户端先连 21 端口,再协商升级为 TLS(
- 可选择仅加密控制通道 (命令)或控制+数据通道
- 仍使用双通道,防火墙配置复杂
- 证书管理较麻烦(需 CA 或自签名)
3. SFTP
- 基于 SSH,所有通信(认证 + 数据)全程加密
- 使用成熟的 SSH 密钥体系,支持免密登录
- 单连接,易于穿越防火墙
- 与系统用户集成紧密,权限控制精细
安全等级排序 :SFTP > FTPS > FTP
四、使用场景建议
| 场景 | 推荐协议 | 理由 |
|---|---|---|
| 内部可信网络,传输公开文件(如软件镜像) | FTP | 简单、高效、兼容性好 |
| 需要兼容旧系统,但要求加密 | FTPS | 某些金融/医疗系统遗留要求 |
| 互联网环境、传输敏感数据、现代系统 | SFTP | 安全、简单、标准、易运维 |
| 自动化脚本、CI/CD 流水线 | SFTP(配合 SSH 密钥) | 无需交互,安全可靠 |
| 需要图形化客户端且支持加密 | SFTP 或 FTPS(如 FileZilla) | 两者都支持,但 SFTP 配置更简单 |
注:SFTP 是 SSH 的一部分,不是 FTP 的升级版!
五、简单区分
- FTP :老式、快、不安全 ,内网环境下自用
- FTPS:FTP + 加密外套,兼容旧系统但配置复杂
- SFTP :基于 SSH 的现代安全文件传输,推荐首选
六、最佳实践建议
- 永远不要在公网使用纯 FTP
- 若必须用 FTPS,优先选择 显式模式(FTPES)
- 新项目一律使用 SFTP
- SFTP 用户应限制 Shell 权限(如
ChrootDirectory+/sbin/nologin) - 结合 SSH 密钥 + fail2ban 实现高安全自动化传输
相关博客 :
FTP、FTPS 和 SFTP 的区别
CentOS 搭建 SFTP 服务器(一)
CentOS 搭建 SFTP 服务器(二)
CentOS 搭建 SFTP 服务器(三)
FTP服务器安装与配置(超详细)