温馨提示×

linux sftp怎样加密

小樊
49
2026-09-14 04:40:08
栏目: 网络安全

在 Linux 下使用 SFTP 本身就具备加密能力,但很多人会混淆“传输加密”“文件加密”和“密钥认证”。下面分层次说明 SFTP 怎样加密,以及常见安全做法。


一、SFTP 本身就是加密的(传输层)

SFTP = SSH File Transfer Protocol

只要你是这样用的:

sftp user@host

或者:

sftp -P 22 user@host

用户名、密码、文件内容全程都是加密的
✅ 基于 SSH(通常是 SSH-2)

⚠️ 注意:

  • FTP(21端口)是明文,不加密
  • FTPS(FTP over SSL)≠ SFTP
  • SFTP 是 SSH 子协议

二、禁用弱加密算法(服务器侧)

/etc/ssh/sshd_config 中限制加密算法(增强安全性):

Ciphers aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-256,hmac-sha2-512
KexAlgorithms curve25519-sha256,ecdh-sha2-nistp256

修改后重启:

systemctl restart sshd

三、使用密钥登录(避免密码被窃听风险)

1️⃣ 生成密钥(客户端)

ssh-keygen -t ed25519

2️⃣ 拷贝公钥到服务器

ssh-copy-id user@host

3️⃣ 禁用密码登录(可选但推荐)

/etc/ssh/sshd_config

PasswordAuthentication no

✅ 即使网络被监听,也无法破解登录


四、对 SFTP 传输的文件“再加密”(内容加密)

如果你担心:

“服务器管理员能看到我的文件”

可以 在传输前加密文件

方法 1:GPG 加密

gpg -c file.txt

生成 file.txt.gpg,再 SFTP 上传

解密:

gpg file.txt.gpg

方法 2:openssl 加密

openssl enc -aes-256-cbc -salt -in file.txt -out file.txt.enc

五、限制 SFTP 用户(chroot 加密隔离)

防止用户访问系统其他目录:

Match User sftpuser
    ChrootDirectory /sftp/%u
    ForceCommand internal-sftp
    AllowTcpForwarding no

✅ 用户只能看到自己的目录
✅ 即使被入侵,影响范围小


六、端口与防火墙建议

  • 不使用默认 22(减少扫描)
Port 2222
  • 防火墙只开放 SFTP 端口
  • 使用 Fail2Ban 防暴力破解

七、总结一句话

SFTP 默认就是加密的
用密钥登录更安全
敏感文件可再用 GPG/OpenSSL 加密
服务器配置可进一步加固

如果你愿意,我可以:

  • 给你一套 最安全的 SFTP 服务器配置
  • 或教你 只用 SFTP 不允许 SSH 登录
  • 或用 Docker 搭 SFTP

你现在是客户端还是服务器管理员

0