这两个协议经常被混淆——都以"S"结尾,都声称能加密 FTP 传输。但 SFTP 和 FTPS 是完全不同的技术,底层架构毫无共同之处。了解区别,才能在有选择时做出正确决策。
名字的由来
SFTP 全称是 SSH File Transfer Protocol(SSH 文件传输协议),与传统 FTP 没有关系。它建立在 SSH 协议之上,通过一条加密连接同时处理文件传输和文件管理(列表、删除、重命名等)。
FTPS 全称是 FTP over SSL,是在传统 FTP 协议基础上增加了 TLS 加密层。它本质上是 FTP 的安全扩展,保留了原有的 FTP 架构。
技术对比
| 对比项 | SFTP | FTPS |
|---|---|---|
| 底层技术 | SSH 子系统 | FTP + TLS/SSL |
| 默认端口 | 22 | 990(隐式)或 21(显式) |
| 连接数量 | 1 条(命令与数据共用) | 2 条(控制连接 + 数据连接) |
| 防火墙穿透 | 友好(只需开放端口 22) | 被动模式可能需要额外配置 |
| 认证方式 | 密码 或 SSH 密钥 | 密码 或 客户端证书 |
| 加密强制性 | 始终加密 | 显式模式下加密为可选协商 |
FTPS 的两种模式
隐式模式(FTPS Implicit)
连接建立时立即启用加密,使用端口 990。这是较旧的标准,行为清晰——连接即加密,没有协商过程。
显式模式(FTPS Explicit / FTPES)
先以普通 FTP 方式连接(端口 21),客户端发送 AUTH TLS 命令请求升级到加密连接。这是更现代的标准。需要注意的是,服务器配置不当时可能允许不加密的连接通过。
实用提示:连接 FTPS 服务器时,务必确认使用的是隐式还是显式模式——这影响端口选择。FTPull 和 FTPush 均支持两种模式,在连接设置中选择即可。
该选哪个?
如果你有选择权,通常推荐 SFTP,原因很直接:
- 只需开放一个端口(22),防火墙规则更简单
- 支持 SSH 密钥认证,比密码更安全
- 连接始终加密,没有"可选加密"的隐患
- 大多数 Linux 服务器默认开启 SSH,SFTP 无需额外配置
但如果服务器只支持 FTPS(常见于虚拟主机和遗留系统),FTPS 同样完全够用。两者只要配置正确,安全性都有保障。
在 FTPull 和 FTPush 中使用
FTPull 和 FTPush 完整支持 FTP、SFTP 和 FTPS(隐式与显式)。在连接设置中选择协议,其余由应用自动处理。SFTP 还支持 SSH 密钥文件认证,指定密钥路径即可实现无密码登录。