HTTP 和 HTTPS 是我们用于在浏览器中查看网站的通信协议,但在此之前,网站运营商需要将一些文件上传到连接到互联网的服务器。多年来,最简单、最方便的方法是通过FTP(文件传输协议)。它今天仍在使用,考虑到该技术已有近 50 年的历史,这是一个了不起的成就,但FTP 开始显示出它的老化。
事实上,开发文件传输协议的专家远没有今天的网站所有者那么多需要担心的事情,而且问题是不可避免的。幸运的是,有足够的人准备好确保有解决这些问题的方法。这些人创建了SFTP(或 SSH 文件传输协议)。
什么是 SFTP?
在我们回答这个问题之前,我们需要回到 SSH 的开端——这种底层通信技术使 SFTP 成为执行许多不同任务的出色工具。SSH 代表Secure Shell ,它是一种远程管理协议,最初由名为 Tatu Ylonen 的芬兰研究员开发,用于减轻密码嗅探攻击的风险。SSH 的第一个版本于 1990 年代发布,与此同时,Ylonen 还对 SFTP 的早期版本投入了一些工作。
在 2000 年代初期,互联网工程任务组(IETF) 开始致力于SSH-2——该协议的修订版本,最终于 2006 年问世,并具有更好的安全性和许多新功能。SSH-2 与Tatu Ylonen 的版本不兼容,这意味着当 IETF 接手时,它也需要彻底改造SFTP 的原始化身。
这被证明有点复杂。有一次,围绕SFTP 是一个协议还是一个完整的远程文件系统存在争论,这稍微延迟了开发。然而,最终,在 2013 年,它的工作重新开始,并且该协议从那时起就一直在使用。
您可能想知道 SSH 和 SFTP 之间的区别是什么。SSH 是一种允许管理员在服务器上管理和执行远程命令的协议。SFTP 是一个扩展,允许他们通过 SSH 提供的安全连接上传、下载和管理文件。
我为什么要使用它?
SFTP 有时被称为“安全文件传输协议” ,您可能不会太惊讶地了解到安全性是您应该在标准 FTP 上使用 SFTP 的主要原因。以下是更详细的差异。
当通过常规 FTP 连接进行连接时,客户端必须由服务器进行身份验证,而且,正如您现在可能已经猜到的那样,这是通过用户名和密码进行的。这些登录凭据以及发送到服务器的其余信息以纯文本形式传输,考虑到协议的年龄,这真的不足为奇。
毕竟,在 20 世纪 70 年代,世界上并没有充斥着可以嗅探您的通信、窃取您的密码或劫持您的连接的黑客。然而,如今情况有所不同,这就是为什么您需要确保与远程主机的连接是安全的。
因为它基于 SSH,所以 SFTP使用密码术来保护传输中的数据,并确保只有授权用户才能管理服务器上的文件。首先,客户端和主机使用对称加密算法对连接进行加密。对称加密意味着数据由同一个密钥加密和解密。
密钥是在会话开始时使用密钥交换算法创建的,它的好处是客户端和服务器不会传输它或与任何其他方共享它。相反,密钥是根据客户端和服务器之间共享的公共数据片段计算的。
当连接安全时,SSH 协议命令使用非对称加密算法来验证客户端。非对称加密基于公私密钥对。在这种情况下,公钥加密数据,私钥解密数据。服务器生成并加密质询并将其发送给客户端。如果客户端能够解密,就证明自己拥有私钥,有权与服务器进行通信。
从用户的角度来看,这整个机制通常隐藏在简单的用户名和密码验证机制之后。换句话说,建立 SFTP 连接所需执行的步骤并不比在常规 FTP 会话期间执行的步骤复杂。
我能用它做什么?
很多人认为SFTP 是通过安全 shell 连接运行的常规 FTP。不是这种情况。这两个协议确实共享一些功能,例如上传和下载文件的能力以及目录的远程管理,但SFTP 为客户端提供了一些额外的功能。这些功能包括远程文件删除、目录列表以及随文件提供更详细的元数据的能力。
SFTP的优缺点
SFTP 并不是在两台相连的计算机之间安全传输文件的唯一方法。例如,安全复制协议 (SCP)也使用 SSH 来促进客户端和服务器之间的数据复制,并且正确实施 rsync 实用程序可以让您获得相同的结果。然而,有限的功能和对某些平台缺乏支持意味着对于大多数人来说,这些替代方案并不真正可行。通常,用户只有两个选项可供选择——SFTP 或 FTPS。
FTPS 是基于 TLS (传输层安全性)的常规文件传输协议的实现。它也使用密码术来确保客户端和服务器之间的连接是安全的,而且它绝对比使用普通的旧 FTP 更可取。
然而,与 SFTP 相比,它落后了。从历史上看,配置 FTPS 以与防火墙一起工作一直是一个挑战,除了所有额外功能之外,SFTP 还具有一些有用的功能,例如继续中断传输的能力。过去,SFTP 大多由命令行客户端支持,这对于经验不足的用户来说是一个问题,但现在,像FileZilla这样具有直观图形界面的应用程序也可以建立 SFTP 连接。SFTP 唯一真正的缺点是它更难在服务器端实施,因此并非所有托管服务提供商都提供。
如何让它更安全?
如您所见,您的 SFTP 连接由极其复杂的加密机制提供支持,可确保您的数据安全。然而,为了可用性,在大多数情况下,您使用用户名和密码登录,这就是事情可能会出错的地方。在许多情况下,弱密码会使所有其他安全机制完全失效,尽管 SFTP 通信基于复杂的密码学,也不例外。赌注也相当高。
通过 SFTP 登录的相同凭据也为您提供 SSH 访问权限,这意味着如果黑客得到它们,他们可以在服务器上远程执行命令。您必须确保所有具有SSH 和 SFTP 访问权限的用户都使用强而独特的密码以及应用了所有安全更新的最新客户端。当然,服务器端的措施也需要到位,但它们是虚拟主机的责任。
结论
FTP 在 Internet 的发展中发挥了重要作用,可以肯定地说,如果没有它,在线世界将大不相同。然而,它在构建时并没有考虑到安全性,现在它可能会使您的整个在线项目面临风险。鉴于您有诸如SFTP 之类的基于复杂加密算法的替代方案,您没有理由使用 FTP。