S3、SFTP、FTP、FTPS 协议的概念、对比与应用场景
一.核心概念与协议栈
协议 全称 基础协议 默认端口 设计目标
S3 Simple Storage Service HTTP/HTTPS 443/80 云存储对象访问
SFTP SSH File Transfer Protocol SSH (Secure Shell) 22 加密文件传输
FTP File Transfer Protocol TCP 21(控制) 20(数据) 明文文件传输
FTPS FTP Secure FTP + SSL/TLS 990(控制) 989(数据) 加密版FTP
二、安全性
协议 加密方式 认证机制 漏洞风险
S3 HTTPS (TLS 1.2+) AWS IAM/Access Key 密钥泄露、桶策略配置错误
SFTP SSH隧道加密(AES/ChaCha20) 用户名+密码/SSH密钥 弱密码、SSH版本漏洞(如CVE-2023-48795)
FTP 无加密(明文传输) 用户名+密码 嗅探攻击、中间人劫持
FTPS SSL/TLS加密(显式/隐式) 用户名+密码 + 证书验证 心脏出血漏洞(CVE-2014-0160)
三、文件操作
功能 S3 SFTP FTP FTPS
断点续传 ✅ (分片上传) ✅ ❌ ✅
文件权限管理 ✅ (IAM/桶策略) ✅ (Unix权限) ❌ ❌
目录递归操作 ❌ (需手动实现) ✅ ( rm -r 式操作) ✅ ✅
传输进度监控 ✅ (SDK支持) ✅ (SCP兼容) ❌ ❌
四、代码实现
1.S3上传(AWS SDK):
// 依赖:software.amazon.awssdk:s3
S3Client s3 = S3Client.builder().region(Region.US_EAST_1).build();
s3.putObject(PutObjectR