SFTP(SSH File Transfer Protocol)本身已经通过SSH协议提供了加密传输,但如果你需要额外的文件加密(例如在传输前预先加密文件内容),以下是完整的解决方案:
SFTP基于SSH协议,默认提供以下安全保护: 1. 传输加密:所有数据(包括文件内容、文件名、命令)均通过SSH隧道加密(如AES、ChaCha20等算法)。 2. 完整性校验:使用MAC(消息认证码)防止数据篡改。 3. 身份验证:支持密码、公钥认证(推荐使用Ed25519/RSA密钥)。
验证加密算法:
ssh -Q cipher # 查看支持的加密算法
sftp -vvv user@host # 连接时显示详细加密信息
若需在SFTP传输前额外加密文件内容,可选择以下方案:
步骤:
# 加密文件(使用接收方公钥)
gpg --encrypt --recipient recipient@email.com file.txt
# 传输加密后的文件
sftp user@host
put file.txt.gpg
# 接收方解密
gpg --decrypt file.txt.gpg > file.txt
# 加密(AES-256-CBC)
openssl enc -aes-256-cbc -salt -in file.txt -out file.txt.enc
# 传输后解密
openssl enc -d -aes-256-cbc -in file.txt.enc -out file.txt
7z a -pPassword -mhe=on encrypted.7z file.txt
sftp user@host
put encrypted.7z
确保服务器SSH配置使用强加密算法(编辑/etc/ssh/sshd_config
):
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512
KexAlgorithms curve25519-sha256
重启服务生效:
sudo systemctl restart sshd
/var/log/auth.log
或journalctl -u sshd
)。bash
sha256sum file.txt
通过以上方法,你可以根据实际需求选择适合的加密层级。