FTP和SFTP不是一回事
很多人在配置服务器、做网站备份或者远程传文件时,都会遇到FTP这个词。但随着安全要求提高,SFTP也越来越多地被提到。虽然名字只差一个字母,但它们的工作方式、安全性、用到的端口完全不同。
FTP是怎么工作的
FTP,全称是文件传输协议(File Transfer Protocol),诞生得早,用的是明文传输。也就是说,你登录的用户名、密码,还有传的文件内容,都是“裸奔”的。只要有人在网络中途截获数据包,就能看到你的全部信息。
FTP通常占用两个端口:21号用于命令控制(比如登录、切换目录),20号用于数据传输。这种双通道机制在做端口映射时特别麻烦,尤其是遇到NAT或防火墙,经常要额外配置被动模式(PASV)的端口范围。
举个例子,你在公司内网搭了个FTP服务器,想从外面访问。除了把21端口映射出去,还得开放一堆数据端口,不然连接上了也无法列目录或下载文件,挺折腾的。
SFTP其实是另一套东西
别看名字像,SFTP和FTP没半点血缘关系。SFTP全称是SSH文件传输协议(SSH File Transfer Protocol),它并不是FTP的加密版,而是基于SSH(安全外壳协议)构建的一套独立文件传输机制。
它最大的好处是全程加密。登录凭证、操作指令、文件内容,全都通过SSH通道传输,默认走22号端口。这意味着你只需要打开一个端口,就能完成所有操作,做端口映射简单多了。
比如你在家里用手机连家里的NAS传照片,如果用SFTP,只要确保路由器上22端口映射正确,用支持SFTP的App(如FileZilla或JuiceSSH)连上去,输入账号密码,就能安全传输,不怕邻居蹭网偷看你传了啥。
实际使用中的差异
现在大多数FTP客户端都同时支持FTP和SFTP,但连接时设置差别很大。选FTP,填主机、端口、账号密码就行;选SFTP,虽然也填这些,但底层协议已经切换成SSH,端口默认是22,而不是21。
如果你在服务器上启用了SSH登录,那SFTP几乎是白送的功能,不需要额外安装服务。而FTP则需要专门部署vsftpd、FileZilla Server这类软件,还要小心配置权限和用户隔离。
再举个场景:你帮朋友维护一个网站,需要定期更新页面文件。用FTP的话,一旦网络环境不安全(比如公共WiFi),密码可能被嗅探。换成SFTP,哪怕在咖啡馆连,也不怕数据泄露。
端口映射配置建议
在家庭或企业路由器上做端口映射时,如果必须用FTP,记得不仅要映射21端口,还得为PASV模式预留一组数据端口(比如50000-50100),并在防火墙放行,否则外网连接会卡在列表加载界面。
而SFTP就省心多了,只需要在路由器上把22端口映射到内网服务器的22端口,其他什么都不用管。当然,出于安全考虑,你可以把外部映射端口改成非标准的,比如把公网的2222映射到内网的22,减少被扫描攻击的风险。
注意一点:改完端口后,客户端连接时要手动指定端口号,不然会默认连22,连不上。
该选哪个
除非是老系统兼容需要,现在新项目一律推荐SFTP。FTP虽然简单通用,但安全隐患太大,尤其在公网环境下几乎等于敞开门等别人进来。而且SFTP在现代操作系统和工具链中支持良好,配置反而更简单。
如果你只是临时传个文件,又不想折腾,可以用SFTP配合密钥认证,连密码都不用输,既安全又方便。