温馨提示×

linux sftp传输慢怎么办

小樊
45
2026-09-08 01:14:18
栏目: 智能运维

Linux 下 SFTP 传输慢一般由网络、加密、磁盘、配置或客户端方式导致。可以按下面思路逐步排查和优化。


一、先确认“慢”在哪里

1. 对比测试

# SFTP
sftp user@host
> get bigfile

# SCP
scp user@host:/path/bigfile .

# 裸网络速度(非加密)
iperf3 -c host
  • 如果 iperf3 很快,但 SFTP 慢 → SSH/SFTP 层面问题
  • 如果 iperf3 也慢 → 网络问题

二、SSH / SFTP 常见优化(最有效)

1. 修改 SSH 加密算法(非常关键)

默认加密对 CPU 压力大。

服务端 / 客户端 /etc/ssh/ssh_config~/.ssh/config

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

重启 SSH:

systemctl restart sshd

2. 开启 SSH 多路复用(小文件特别有效)

Host *
    ControlMaster auto
    ControlPath ~/.ssh/%r@%h-%p
    ControlPersist 10m

3. 调整 TCP 参数(大文件有效)

服务端 & 客户端

sysctl -w net.ipv4.tcp_window_scaling=1
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"

写入 /etc/sysctl.conf 永久生效。


三、SFTP 使用方式优化

1. 不要逐个传小文件

❌ 慢:

sftp> mget *

✅ 快:

tar czf - dir | ssh user@host "tar xzf -"

scp -r dir user@host:/path

2. 使用更快的替代工具

工具 说明
rsync 断点续传、增量
lftp 支持多线程
bbcp 超高性能
rclone 云/对象存储

示例(rsync):

rsync -avz --progress dir/ user@host:/path/

四、磁盘 / IO 问题

SFTP 慢也可能是:

iostat -x 1
  • %util 高 → 磁盘瓶颈
  • 使用 SSD / RAID 可明显提升

五、云服务器特别注意

  • 云厂商 公网带宽受限
  • 跨地域传输极慢
  • 可走 内网 IP
  • 大文件建议:
    • 对象存储(OSS / S3)
    • 专线条线

六、快速排查清单

✅ 网络是否正常
✅ 是否小文件太多
✅ 是否 CPU 被加密吃满
✅ 是否磁盘 IO 满
✅ 是否跨地域/公网


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

  • 内网还是公网
  • 大文件还是小文件
  • 使用的是 sftp / scp / rsync
  • 操作系统版本

我可以直接给你一套最优配置

0