温馨提示×

ubuntu sftp速度怎么提升

小樊
36
2026-09-02 06:56:54
栏目: 智能运维

在 Ubuntu 上提升 SFTP 传输速度,可以从网络、SSH/SFTP 配置、磁盘、并发方式几个层面来优化。下面按实用程度给你总结一套方法。


一、基础网络与系统检查(先排除瓶颈)

  1. 确认瓶颈在哪里

    # 看 CPU
    top
    # 看磁盘 IO
    iostat -x 1
    # 看网络
    iftop
    
    • CPU 高 → SSH 加密开销大
    • 磁盘 100% → 磁盘慢
    • 网络跑不满 → 网络或 SSH 参数问题
  2. 使用有线网络 / 万兆网卡

    • Wi-Fi 和跨公网本身就会限制 SFTP 速度

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

1️⃣ 修改 SSH 配置(服务端 + 客户端)

编辑:

sudo vim /etc/ssh/sshd_config

推荐参数:

# 使用更快的加密算法
Ciphers chacha20-poly1305@openssh.com,aes128-gcm@openssh.com,aes256-gcm@openssh.com

# 启用压缩(仅低速网络有用,局域网建议关)
Compression no

# 提高吞吐量
TCPKeepAlive yes

重启:

sudo systemctl restart ssh

客户端也可加:

sftp -o Ciphers=chacha20-poly1305@openssh.com user@host

2️⃣ 调整 TCP 参数(大文件传输明显)

sudo vim /etc/sysctl.conf

添加:

net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_window_scaling = 1

生效:

sudo sysctl -p

三、SFTP 使用方式优化

1️⃣ 大文件用 scprsync 更快

SFTP 本身有协议开销:

rsync -avP file user@host:/path
scp -C file user@host:/path

2️⃣ 多文件并行传输

SFTP 是单连接,小文件极慢。

✅ 方法一:parallel sftp

parallel -j 8 sftp user@host:/remote/{} ::: file1 file2 file3

✅ 方法二:tar 打包再传

tar czf - dir | ssh user@host "cd /path && tar xzf -"

四、磁盘与文件系统优化

  • 使用 SSD / NVMe
  • 目标目录避免 NFS / 网络盘
  • 文件系统推荐:
    • ext4 / xfs

五、极端场景方案(100MB/s+)

如果 SFTP 仍慢:

  • 改用 HTTP / HTTPS(nginx + 大文件)
  • 改用 FTP(vsftpd)
  • 内网用 NFS / SMB

六、快速对照表

场景 建议
内网大文件 rsync + aes-gcm
公网大文件 chacha20
小文件多 tar 打包
CPU 高 换加密算法
网络未满 调 TCP 窗口

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

  • 内网还是公网?
  • 单文件还是大量小文件?
  • 当前速度大概多少?

我可以直接给你最优配置方案

0