SFTP和FTPS都用于安全文件传输,名字相似,但本质完全不同。SFTP 是 SSH 协议套件的一部分,FTPS 是 FTP 协议的安全扩展。下面从协议基础、端口、连接方式、认证、防火墙、性能、场景等维度详细比较。
一、基本定义
| 项目 | SFTP | FTPS |
|---|---|---|
| 全称 | SSH File Transfer Protocol | FTP over SSL/TLS |
| 基础协议 | SSH(Secure Shell) | FTP + SSL/TLS |
| 关系 | 与 FTP 无关,是 SSH 的子协议 | FTP 的安全版本 |
| 默认端口 | 22 | 显式:21;隐式:990 |
| 标准 | IETF 草案(SSH 套件) | RFC 4217(显式)、RFC 2228 等 |
关键点:SFTP 不是“FTP over SSH”,而是 SSH 协议中专门用于文件传输的子系统。FTPS 才是 FTP 加 SSL/TLS。
二、连接方式与端口
| 对比项 | SFTP | FTPS |
|---|---|---|
| 连接数量 | 单条 TCP 连接,多路复用 | 控制连接 + 数据连接(双连接) |
| 端口 | 22(可配置) | 显式:21;隐式:990 |
| 数据连接 | 复用同一连接 | 主动/被动模式,被动模式需开放高端口 |
| 防火墙友好性 | 高,只需开 22 | 低,需开 21 和一段数据端口 |
| NAT 穿透 | 容易 | 较复杂,尤其被动模式 |
结论:SFTP 在防火墙和 NAT 环境下更友好。
三、加密与认证
| 对比项 | SFTP | FTPS |
|---|---|---|
| 加密 | SSH 加密(AES、ChaCha20 等) | SSL/TLS 加密(AES、3DES 等) |
| 服务器认证 | SSH 主机密钥 | X.509 服务器证书 |
| 客户端认证 | 密码、公钥、键盘交互、双因素 | 密码、客户端证书 |
| 密钥管理 | SSH 密钥对,生成简单 | 证书需 CA 签名或自签名,管理复杂 |
| 完整性 | SSH 消息认证码 | TLS 记录层 MAC |
结论:SFTP 认证更灵活,密钥管理更简单;FTPS 依赖 PKI,适合已有证书体系的环境。
四、功能与兼容性
| 对比项 | SFTP | FTPS |
|---|---|---|
| 文件操作 | 支持上传、下载、删除、重命名、权限、符号链接 | 支持标准 FTP 命令,功能类似 |
| 目录列表 | 协议统一,格式规范 | 依赖 FTP LIST/NLST,格式可能因服务器而异 |
| 断点续传 | 支持 | 支持 |
| 兼容客户端 | WinSCP、FileZilla、OpenSSH | FileZilla、WinSCP、传统 FTP 客户端 |
| 服务器支持 | OpenSSH 自带,无需额外证书 | 需配置 SSL 证书,如 vsftpd、ProFTPD |
| 代理支持 | 通常通过 SSH 隧道 | 可能需要 SOCKS/HTTP 代理 |
结论:SFTP 功能更统一;FTPS 兼容传统 FTP 生态,但配置更复杂。
五、性能对比
| 对比项 | SFTP | FTPS |
|---|---|---|
| 连接开销 | 单连接,开销小 | 双连接,TLS 握手开销大 |
| 传输效率 | 较高 | 略低,尤其小文件多时 |
| 加密开销 | SSH 加密高效 | TLS 加密高效 |
| 延迟 | 较低 | 被动模式可能增加延迟 |
结论:SFTP 通常性能略优,尤其在高延迟或小文件场景。
六、优缺点
SFTP 优点
单连接,防火墙友好。
认证方式灵活,密钥管理简单。
协议统一,跨平台一致性好。
与 SSH 共用端口,无需额外证书。
SFTP 缺点
需要 SSH 服务,部分老系统不支持。
某些传统 FTP 客户端不兼容。
目录列表格式与 FTP 不同,脚本迁移需调整。
FTPS 优点
兼容传统 FTP 客户端和脚本。
可利用现有 X.509 证书体系。
显式/隐式模式灵活。
适合必须使用 FTP 协议的合作伙伴。
FTPS 缺点
双连接,防火墙配置复杂。
证书管理繁琐。
配置不当可能允许明文回退,存在安全风险。
性能略低于 SFTP。
七、使用场景
| 场景 | 推荐 |
|---|---|
| 已有 SSH 环境,追求简单安全 | SFTP |
| 需要穿过严格防火墙,只开一个端口 | SFTP |
| 合作伙伴只支持 FTP,但要求加密 | FTPS |
| 已有 X.509 证书体系,需证书认证 | FTPS |
| 自动化脚本基于传统 FTP 命令 | FTPS |
| 云服务器、Linux 环境 | SFTP |
| 金融、医疗等强合规,要求证书 | FTPS |
八、安全注意事项
| 项目 | SFTP | FTPS |
|---|---|---|
| 明文回退 | 无 | 可能,需禁用 |
| 弱加密 | 可配置禁用 | 需禁用 SSLv3、TLS 1.0 |
| 证书验证 | 主机密钥需校验 | 服务器证书需校验 |
| 中间人攻击 | 密钥指纹校验 | 证书链校验 |
| 推荐配置 | SSH 密钥 + 禁用密码 | TLS 1.2+ + 强加密套件 |
九、总结
| 对比维度 | SFTP | FTPS |
|---|---|---|
| 基础 | SSH | FTP + SSL/TLS |
| 端口 | 22 | 21(显式)/ 990(隐式) |
| 连接 | 单连接 | 双连接 |
| 认证 | SSH 密钥/密码 | 密码/证书 |
| 防火墙 | 友好 | 复杂 |
| 性能 | 较高 | 略低 |
| 兼容性 | 现代工具 | 传统 FTP 工具 |
| 推荐场景 | 现代、简单、安全 | 传统兼容、证书体系 |
一句话:SFTP 基于 SSH,单连接、端口 22、认证灵活、防火墙友好,是现代文件传输的首选;FTPS 基于 FTP + SSL/TLS,双连接、端口 21/990、依赖证书,适合必须兼容传统 FTP 或已有 PKI 的环境。安全传输优先选 SFTP。