我从一些来源听说 SFTP 比 FTPS 更可取。如果是这样,我想知道具体原因。
答案1
有一个相当解释性的SSH-SFTP 博客上的文章详细介绍了 SFTP 和 FTPS 之间的区别,并概述了它们各自更适合的场景。
根据上述文章,每种协议都有“优点”和“缺点”,因此根据每个具体情况,一种协议可能比另一种协议更有效。
下面我将重述我认为最重要的几点:
SFTP 始终是安全的,FTPS 可能不安全:SFTP 是 SSH 协议的一个子系统,因此它始终在加密/安全通道中运行;如果服务器不支持 SSL/TLS,FTPS 可能采用普通(未加密)FTP 回退策略。
FTPS 比 SFTP 更快:在完全相同的网络条件下,FTPS 可能比 SFTP 更快,因为它分别运行控制通道和数据通道(而 SFTP 在单个通道中运行并将控制数据包交错在数据流中)
SFTP 具有防火墙友好性,而 FTP(S) 则不然:SFTP 在 SSH 内部运行,因此它仅使用服务器上的一个端口(默认值:22);而 FTP(S) 则要求服务器能够连接回客户端(主动),或者防火墙上有大量开放端口,以便服务器接受传入的数据连接(被动)。
FTPS 可以委托信任,而 SFTP 不能:FTP(S) 利用基于 X.509 证书的 SSL/TLS 内在安全性,该证书可由双方信任的认证机构颁发,而 SSH 服务器密钥只能由服务器部分颁发,并且必须得到客户端部分的信任。
答案2
我更喜欢 SFTP 而不是 FTPS,主要是因为在服务器上设置 FTP 服务器需要额外的努力。服务器很可能已经安装了 SSH 来远程管理它,那么为什么不利用已经安装的功能呢?使用 SFTP 需要无需额外努力使其运行。
大多数 FTP 客户端都内置了对 SFTP 的支持,因此客户端支持主要是一个没有实际意义的问题。
答案3
这CodeGuru 的页面很好地总结了每种方法的优缺点:
像往常一样,答案取决于您的目标和要求。一般来说,SFTP 在技术上优于 FTPS。当然,实现对两种协议的支持是个好主意,但它们在概念、支持的命令和许多其他方面都不同。
如果您的服务器需要通过个人设备(智能手机、PDA 等)或某些支持 FTP 但没有 SSH/SFTP 客户端的特定操作系统进行访问,则使用 FTPS 是个好主意。如果您正在构建自定义安全解决方案,SFTP 可能是更好的选择。
至于客户端,要求由您计划连接的服务器定义。当连接到 Internet 服务器时,SFTP 更受欢迎,因为它默认受 Linux 和 UNIX 服务器支持。
对于私人主机到主机传输,您可以使用 SFTP 和 FTPS。对于 FTPS,您需要搜索免费的 FTPS 客户端和服务器软件或购买商业软件的许可证。对于 SFTP 支持,您可以安装提供免费客户端和服务器软件的 OpenSSH 软件包。
答案4
我不认为哪一种更好。这实际上取决于你的基础设施。此主题CodeGuru 讨论了 SFTP 和 FTPS 的优缺点。
FTPS 的一个好处是数据通道。数据通道可以重定向,以便将文件从服务器传输到服务器。此功能尚未得到很好的理解。这就是为什么很多人会说 FTP 数据通道是不必要的。
我相信,如果您只是对安全地发送文件感兴趣,那么您应该使用 FTPS。如果您已经拥有 SSH 基础设施,那么 SFTP 可能会有用。