FTP传输与SFTP区别:搞懂这两个协议,文件上传不再出问题

FTP和SFTP名字像,但其实差别挺大

你在公司传报表、给网站上传图片,或者帮朋友发个大文件,可能都用过FTP。名字听起来专业,操作也简单,打开工具填上地址、用户名、密码,点连接就完事。但你有没有遇到过,输完信息连不上?或者别人让你用SFTP,你发现原来的工具根本没法用?

FTP是怎么工作的

FTP,全称是文件传输协议(File Transfer Protocol),早在1971年就有了,是个老前辈。它专门用来在电脑之间搬文件,比如把本地的照片传到服务器上。不过它有个大毛病——不加密。

什么意思呢?就像你寄明信片,内容谁都能看。FTP在传输过程中,你的用户名、密码、文件内容都是“裸奔”的。如果中间被人截了包,账号密码分分钟被拿走。尤其在公共Wi-Fi下操作,风险更高。

FTP通常用两个端口:21号负责发命令,比如“我要上传这个文件”,20号负责传数据。这种设计在现在看来有点麻烦,还容易被防火墙拦住。

SFTP其实是另一个东西

很多人以为SFTP就是“安全版FTP”,加了个S而已。其实它跟FTP一点血缘关系都没有。SFTP全称是SSH文件传输协议(SSH File Transfer Protocol),靠的是SSH加密通道来传文件。

SSH本来是用来远程控制服务器的,比如运维人员登录Linux系统。SFTP借了它的安全通道,所有数据——包括密码和文件内容——全都加密传输。哪怕被截获,看到的也是一堆乱码。

它只用一个端口,默认是22,比FTP省事,穿透防火墙也更容易。你现在用的很多上传工具,比如WinSCP、FileZilla,只要选SFTP模式,填对端口就能连。

实际使用中的差异

举个例子:你想把客户资料传到公司服务器。用FTP的话,只要网络里有嗅探工具,对方可能几分钟就拿到你的登录信息。而用SFTP,就算同个网络,他也只能看到一堆加密流量,解不开。

再比如,你在家连公司服务器,路由器或运营商如果限制了多端口通信,FTP很可能连不上。SFTP因为只用一个端口,成功率高很多。

配置上的小细节

如果你自己搭服务器,FTP需要额外配置用户权限、被动模式端口范围,还得考虑安全性。而SFTP只要SSH服务开着,用户有登录权限,基本就能用,管理起来更省心。

有些主机商直接禁用了FTP,只允许SFTP连接,就是为了避免安全漏洞。你要是还在用老教程配FTP,可能会一头雾水。

代码示例:SFTP连接方式

ssh user@server.example.com -p 22
sftp user@server.example.com

上面这行命令,就是在终端通过SFTP连接服务器。不需要额外软件,Linux和macOS自带支持。Windows 10以后的版本也内置了OpenSSH,可以直接用。

该选哪个

如果你只是自己玩玩,内网传点不重要的文件,FTP还能凑合。但凡涉及账号、客户数据、网站内容,SFTP是更靠谱的选择。现在很多云服务商默认也不开FTP了,直接推SFTP或FTPS。

工具方面,推荐用支持双协议的客户端。比如FileZilla,连接时下拉选“SFTP - SSH File Transfer Protocol”就行。填错协议类型,死活连不上是最常见的问题。