温馨提示×

怎样提升linux sftp速度

小樊
37
2026-09-05 03:22:55
栏目: 智能运维

提升 Linux 下 SFTP 传输速度,通常可以从网络、系统参数、SFTP/SSH 配置、客户端使用方式几个方面入手。下面按实用程度给你一套思路。


一、优先确认瓶颈在哪里

先判断是网络、磁盘、CPU哪一块慢:

  • 看带宽:iperf3
  • 看 CPU:top(SFTP 依赖 SSH 加密,CPU 常是瓶颈)
  • 看磁盘:iostat -x 1

二、SFTP / SSH 服务端优化(关键)

1. 使用更快的加密算法(非常重要)

SSH 默认加密对 CPU 压力大,可指定高效算法:

服务端 /etc/ssh/sshd_config

Ciphers aes128-gcm@openssh.com,chacha20-poly1305@openssh.com
MACs umac-128-etm@openssh.com

重启:

systemctl restart sshd

客户端

sftp -o Ciphers=aes128-gcm@openssh.com user@host

2. 开启 SSH 压缩(仅低速网络)

高速网络反而更慢:

Compression no

低速网络可尝试:

sftp -C user@host

3. 增大 SSH 缓冲区(TCP + SFTP)

/etc/ssh/sshd_config

TCPKeepAlive yes

系统层(所有 TCP):

sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"

三、SFTP 客户端使用技巧

1. 使用 parallel / lftp 多线程(强烈推荐)

SFTP 本身单连接串行,很慢。

lftp(支持并行)

lftp sftp://user@host
> set net:max-rate 0
> set pget:default-n 10
> pget file.iso

或批量:

mirror --parallel=10 /remote /local

2. 避免大量小文件

小文件极慢(每个都有握手开销):

  • tar 再传:
tar czf - dir | sftp user@host:/path

tar czf file.tar.gz dir && sftp file.tar.gz

四、网络层优化

1. 启用 TCP BBR(Linux 4.9+)

sysctl -w net.core.default_qdisc=fq
sysctl -w net.ipv4.tcp_congestion_control=bbr

查看:

sysctl net.ipv4.tcp_congestion_control

2. 调整 MTU(跨运营商/隧道)

ip link set eth0 mtu 1400

五、磁盘 & 文件系统

  • 使用 SSD / NVMe
  • 避免 atime
mount -o remount,noatime /
  • RAID0(性能优先,无冗余)

六、如果真要极限速度

  • 内网:用 rsync over ssh,或干脆 NFS / scp -T
  • 跨公网:考虑 Rclone / Aspera / BBTransfer

七、快速检查清单 ✅

  • [ ] 使用 aes128-gcm
  • [ ] lftp 多线程
  • [ ] BBR 开启
  • [ ] 大文件 / tar
  • [ ] CPU 不是瓶颈

如果你愿意,可以告诉我:

  • 内网还是公网
  • 文件类型(大文件 / 小文件)
  • 当前速度 & 带宽

我可以给你一套针对性配置

0