温馨提示×

ubuntu sftp传输慢怎么解决

小樊
44
2026-09-17 11:37:52
栏目: 智能运维

在 Ubuntu 上 SFTP 传输慢 通常由网络、SSH 配置、磁盘 IO 或加密算法等因素引起。下面按常见原因 → 对应解决办法给你一个系统排查清单。


一、先确认“慢在哪里”

1️⃣ 测试基础网络速度

ping 目标IP
iperf3 -c 目标IP

如果 iperf3 本身就慢 → 网络问题,不是 SFTP 问题


二、SSH / SFTP 配置优化(最常见)

✅ 2.1 修改 SSH 服务端配置(推荐)

编辑:

sudo vim /etc/ssh/sshd_config

确保或添加以下内容:

# 禁用 DNS 反查(非常重要)
UseDNS no

# 保持连接
TCPKeepAlive yes

# 提高吞吐量
ClientAliveInterval 60
ClientAliveCountMax 3

重启 SSH:

sudo systemctl restart ssh

✅ 2.2 使用更快的加密算法

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

在客户端连接时指定:

sftp -oCiphers=aes128-gcm@openssh.com -oMACs=umac-128@openssh.com user@host

或写入客户端配置:

vim ~/.ssh/config
Host *
    Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com
    MACs umac-128@openssh.com

三、文件传输方式优化

✅ 3.1 避免大量小文件

小文件是 SFTP 最慢的场景

❌ 慢:

sftp> put *.log

✅ 快:

tar czf data.tar.gz dir/
sftp> put data.tar.gz

✅ 3.2 使用 rsync(强烈推荐)

rsync -avzP ./local/ user@host:/remote/

优点:

  • 支持断点续传
  • 比 SFTP 快很多
  • 可压缩

四、磁盘 & IO 问题

4.1 查看磁盘是否瓶颈

iostat -x 1

sar -d 1

如果是磁盘 IO 满:

  • 换 SSD
  • 避免同时写多个位置

五、Ubuntu 系统层面优化

✅ 5.1 调整 TCP 参数

sudo sysctl -w net.ipv4.tcp_window_scaling=1
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216

永久生效:

sudo vim /etc/sysctl.conf
net.ipv4.tcp_window_scaling=1
net.core.rmem_max=16777216
net.core.wmem_max=16777216

六、Windows / 客户端问题(如果你从 Windows 连)

  • 不要用 FileZilla 默认设置
  • 使用 WinSCP(SCP 模式)
  • 或 Linux 子系统 WSL + rsync

七、终极方案(最快)

如果你只是传文件,不考虑交互:

直接用 scp / rsync

scp -C file user@host:/path

✅ 或开 HTTP 服务

python3 -m http.server 8000

总结(快速 checklist)

✅ 关 DNS 反查
✅ 用 aes-gcm
✅ 打包小文件
✅ 用 rsync
✅ 检查磁盘 IO
✅ 调 TCP 窗口


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

  • Ubuntu 版本
  • 客户端慢还是服务端慢
  • 内网 / 公网
  • 文件类型(大文件 or 小文件)

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

0