SFTP 的加密配置核心在于围绕 SSH 协议参数进行精细化调优。要保障传输安全,需从加密算法选择、协议参数设定及额外加固三方面入手。下面逐项拆解关键操作,按步骤执行即可。
加密算法选择
推荐首选 AES-GCM 模式,例如 aes256-gcm@openssh.com 与 aes128-gcm@openssh.com,两者在安全性与性能间取得良好平衡。次选方案为 AES-CTR 系列(aes256-ctr、aes128-ctr),同样属于可靠选择。务必禁用老旧算法:DES、3DES、RC4。具体做法是在配置文件中明确限定允许的算法列表,仅保留高强度项。
配置文件参数
修改 /etc/ssh/sshd_config,这是多数 Linux 系统下的标准路径。需调整三个关键块:
# 指定加密算法(多个算法用逗号分隔)
Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes128-ctr
# 密钥交换算法(可选,默认已较安全)
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group14-sha256
# 消息认证码(MAC)算法
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
注意:Ciphers 为必选项,直接决定传输内容的加密强度;KexAlgorithms 与 MACs 虽在 SSH 服务端默认值中已较为安全,但明确指定可消除版本差异带来的不确定性,也便于统一审计。
其他安全增强
仅依赖加密算法不够,攻击面管理同样关键。两个常见加固项:
- 禁用不必要的功能:将
X11Forwarding设为no,AllowTcpForwarding设为no。X11 转发与 TCP 转发在 SFTP 实际场景中极少使用,保留可能带来被利用风险。 - 强制使用强认证:优先采用 SSH 密钥认证,同时禁用密码认证——即将
PasswordAuthentication设为no。这样即便密码被猜中,也无法登录。
验证与重启
保存配置后,需重启 SSH 服务使改动生效:sudo systemctl restart sshd。
仅重启还不够,必须验证生效情况。使用 sftp -v 命令连接目标服务器,重点关注输出中的 debug1: kex: algorithm: 行,确认其列出的算法与配置一致。例如出现 curve25519-sha256@libssh.org 即表示已采用强曲线。
提醒:上述配置主要针对 Linux 环境。Windows 上的 OpenSSH 或第三方 SFTP 服务器参数可能存在差异,需根据实际系统版本与 SSH 实现做微调。具体操作时,官方文档始终是最可靠的参考。
