温馨提示×

如何提升Linux SFTP速度

小樊
34
2026-07-31 13:11:44
栏目: 智能运维

提升 Linux 下 SFTP 传输速度通常从 网络、加密算法、磁盘、SFTP 配置、客户端参数 五个方面入手。下面按实用性和可操作性给你一套完整优化方案。


一、先确认瓶颈在哪

在优化前,先判断是 网络 / CPU / 磁盘 问题:

# 查看 CPU 是否打满
top

# 查看磁盘 IO
iostat -x 1

# 查看网络带宽
iftop

二、优化 SSH / SFTP 加密算法(最明显)

SFTP 基于 SSH,加密算法直接影响速度

1️⃣ 使用更快的加密算法(推荐)

编辑服务器 /etc/ssh/sshd_config

Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com
MACs hmac-sha2-256-etm@openssh.com

aes128-gcmchacha20-poly1305 在现代 CPU 上非常快
❌ 避免使用 aes256-cbc(慢)

重启 SSH:

systemctl restart sshd

2️⃣ 禁用非常用算法

减少协商开销:

HostKey /etc/ssh/ssh_host_ed25519_key

三、调整 TCP / 网络参数

1️⃣ 开启 TCP BBR(强烈推荐)

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

验证:

sysctl net.ipv4.tcp_congestion_control

2️⃣ 增大 TCP 缓冲区

net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864

四、优化 SFTP 服务端配置

1️⃣ 使用 internal-sftp(更快)

Subsystem sftp internal-sftp

避免 fork 外部进程,性能更好。


2️⃣ 关闭 DNS 反向解析

UseDNS no

五、调整客户端参数(立竿见影)

1️⃣ 使用更快的加密算法

sftp -c aes128-gcm@openssh.com user@host

2️⃣ 增加并发(大文件)

SFTP 本身不支持多线程,但你可以:

拆分文件 + 多连接

# 并行传输
sftp user@host &
sftp user@host &

改用 rsync(比 SFTP 快)

rsync -avz --progress /data/ user@host:/data/

六、磁盘 & 文件系统优化

1️⃣ 避免磁盘成为瓶颈

iostat -x 1

如果是 HDD:

  • 考虑换 SSD
  • 避免同时大量小文件

2️⃣ 使用临时内存盘(适合临时文件)

mount -t tmpfs tmpfs /mnt/ramdisk

七、大文件最优方案(推荐)

场景 推荐
大文件 rsync -avz
断点续传 rsync --partial
多线程 lftp / rclone
极速 bbcp / aspera(商业)

lftp 示例(多线程)

lftp sftp://user@host -e "mirror -c --parallel=8 /remote /local"

八、常见误区

❌ 盲目调 ClientAliveInterval
❌ 调大 MTU(跨公网风险大)
❌ 以为 SFTP 比 SCP 快(实际上不一定)


九、推荐组合(实战最优)

服务器

Subsystem sftp internal-sftp
Ciphers aes128-gcm@openssh.com
UseDNS no

网络

  • 开启 BBR
  • 调整 TCP buffer

客户端

  • rsync -avz
  • lftp 多线程

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

  • 内网还是公网
  • 文件大小(小文件 / 大文件)
  • 当前带宽(如 100Mbps / 1Gbps)

我可以给你一套 针对你环境的精确参数

0