在 CentOS 上提升 SFTP 传输速度,可以从 网络、系统内核、SSH/SFTP 配置、磁盘 IO、客户端参数 等多个层面进行优化。下面按实用程度给你一套完整方案。
编辑配置文件:
vim /etc/ssh/sshd_config
Ciphers aes128-ctr,aes192-ctr,aes256-ctr
MACs hmac-sha2-256,hmac-sha2-512
避免使用
aes-cbc、hmac-md5等老旧算法
UseDNS no
MaxSessions 50
MaxStartups 50:30:100
GSSAPIAuthentication no
Compression no
局域网/高速网络建议关闭压缩
高延迟、低带宽网络可尝试yes
systemctl restart sshd
编辑:
vim /etc/sysctl.conf
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_congestion_control = cubic
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
生效:
sysctl -p
iostat -x 1
cat /sys/block/sda/queue/scheduler
推荐:
echo deadline > /sys/block/sda/queue/scheduler
或(CentOS 7+):
echo mq-deadline > /sys/block/sda/queue/scheduler
sftp 多线程(推荐工具)lftp(比 sftp 快很多)yum install -y lftp
lftp sftp://user@ip
mirror -c --parallel=10 /remote/path /local/path
✅ parallel 参数可大幅提升速度
rsync + sshrsync -avzP --progress -e "ssh -c aes128-ctr" /local/path/ user@ip:/remote/path/
| 问题 | 优化建议 |
|---|---|
| SELinux | 临时测试:setenforce 0 |
| 防火墙 | 避免过多 iptables 规则 |
| 小文件 | 打包后传输 |
| 高延迟网络 | 增大 TCP window |
| 使用 root | 不建议,权限检查慢 |
✅ 修改 /etc/ssh/sshd_config
✅ 关闭 GSSAPI
✅ 使用 aes-ctr 加密
✅ 使用 lftp 或 rsync
✅ 调整 TCP 参数
✅ 磁盘调度器优化
time rsync -avzP /data/ user@ip:/data/
如果你愿意,可以告诉我:
我可以给你 定制优化方案 或 直接给你一套生产级配置。