如果你正在使用FTP传输文件,有一点你应该知道:标准FTP会将你的用户名、密码和每个文件完全不加密地发送出去。同一网络上的任何人都可以用基本的数据包嗅探工具看到一切。这不是理论上的风险。文件传输漏洞已经导致了近年来最大规模的数据泄露事件。

好消息是:保护你的传输并不复杂。你只需要使用正确的协议并遵循几个最佳实践。

为什么普通FTP是个问题

FTP在1971年设计,远在互联网安全成为关注点之前。它以明文传输一切,包括登录凭据。在咖啡店Wi-Fi、被入侵的路由器,甚至有内鬼的企业网络上,你的文件和密码完全暴露。

这不仅仅是个人文件的问题。2023年,MOVEit文件传输平台的漏洞影响了3,000多个组织和约1亿用户。2024年,Finastra的SFTP平台被攻破,可能暴露了全球银行的数据。2025年,Wing FTP Server和CrushFTP的严重漏洞被实际利用。

模式很清楚:文件传输是高价值目标,使用未加密的协议使其极易被利用。

SFTP vs FTPS vs FTP:应该用哪个

SFTP(SSH文件传输协议)是大多数用户的最佳选择。它通过端口22上的单一SSH连接加密所有内容。支持基于密钥的认证(密码不会在网络上传输),其单端口架构使防火墙配置简单。如果有选择,请使用SFTP。

FTPS(FTP over TLS)在原始FTP协议上添加了SSL/TLS加密。正确配置时是安全的,但它继承了FTP的双通道架构(控制连接和数据连接分离),使防火墙规则和NAT穿越变得复杂。还需要管理SSL证书。当服务器不提供SFTP时使用FTPS。

普通FTP只应在流量不会接触互联网的隔离内部网络中使用。即便如此,也要考虑SFTP是否同样容易设置。

使用SSH密钥认证

密码可以被猜测、钓鱼或截获。SSH密钥具有密码学强度,几乎不可能被暴力破解。4096位RSA密钥或Ed25519密钥提供的安全性是任何密码都无法比拟的。

在Mac上生成密钥,打开终端运行:

ssh-keygen -t ed25519 -C "your-email@example.com"

这会在~/.ssh/中创建一对密钥。将公钥添加到服务器的authorized keys中。然后配置你的FTP客户端(或FTPull/FTPush)使用私钥代替密码。

将密钥密码保存到macOS钥匙串中,这样就不用每次都输入:

ssh-add --apple-use-keychain ~/.ssh/id_ed25519

Mac上的凭据存储

FTP凭据的存储位置很重要。有些应用将密码以明文存储在磁盘上的配置文件或plist中。如果恶意软件或未授权用户访问了你的Mac,这些凭据会立即泄露。

安全的方法是使用macOS钥匙串,它会加密凭据并用Mac的登录密码保护。FTPSuite将所有连接凭据存储在钥匙串中,而不是应用特定的文件中。这利用了Apple内置的加密和访问控制。

请注意,Mac信息窃取器(如Atomic Stealer和Banshee)会特别针对钥匙串数据。保护自己的方法:保持macOS更新,启用FileVault磁盘加密,使用强登录密码,谨慎对待来源不明的下载。

最佳实践清单

FTPSuite如何处理安全

FTPSuite(FTPull和FTPush)在设计时就考虑了这些最佳实践:

文件传输的安全取决于你选择的协议和管理凭据的方式。工具已经存在。请善加利用。