温馨提示×

centos sftp传输慢如何解决

小樊
37
2026-09-21 06:25:42
栏目: 智能运维

在 CentOS 上 SFTP 传输速度慢,通常不是 SFTP 本身的问题,而是 网络、SSH 配置、磁盘或系统参数 导致的。下面按「常见原因 → 对应解决办法」给你一套排查和优化方案。


一、先确认瓶颈在哪里

1️⃣ 测试网络带宽

iperf3 -c 对端IP

或简单测试:

scp bigfile user@ip:/tmp/
  • 如果 scp 也慢 → 网络或 SSH 问题
  • 如果 scp 快,只有 SFTP 慢 → 客户端/配置问题

二、SSH / SFTP 服务端优化(最有效)

✅ 1. 禁用 DNS 反向解析(非常常见)

编辑:

vi /etc/ssh/sshd_config

修改或添加:

UseDNS no
GSSAPIAuthentication no

重启 SSH:

systemctl restart sshd

效果明显,尤其是内网或 DNS 慢的环境


✅ 2. 调整加密算法(CPU 瓶颈)

SFTP 走 SSH,加密会吃 CPU。

查看支持的算法:

ssh -Q cipher

推荐在 sshd_config 中指定:

Ciphers aes128-ctr,aes192-ctr,aes256-ctr
MACs hmac-sha2-256

重启:

systemctl restart sshd

⚠️ 不要使用 aes256-cbc(慢)


✅ 3. 开启 SSH 压缩(小文件有效)

Compression yes

⚠️ 大文件反而更慢(CPU 消耗)


三、TCP 网络参数优化(CentOS 7/8 通用)

✅ 1. 修改内核参数

vi /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
net.ipv4.tcp_timestamps = 1

生效:

sysctl -p

✅ 对 跨机房 / 公网 效果明显


四、磁盘 IO 问题

✅ 1. 检查磁盘是否瓶颈

iostat -x 1

或:

iotop

如果是磁盘慢:

  • 使用更快的磁盘
  • 避免同时大量写日志
  • 目标目录不要在 NFS 上

五、SFTP 客户端优化

✅ 1. 使用并行传输(推荐)

SFTP 是单线程的!

✅ 替代方案:

  • lftp
lftp sftp://user@ip -e "mirror --parallel=10 /local /remote"
  • rsync
rsync -avz -e ssh /local/ user@ip:/remote/

⚠️ SFTP 本身不适合大批量小文件


六、防火墙 / 安全软件

  • 关闭 SELinux 测试:
setenforce 0
  • 检查 firewalld 是否有限速规则

七、快速检查清单(最重要)

✅ 必做三件事:

  1. UseDNS no
  2. 禁用 GSSAPI
  3. 调整 TCP 窗口

八、如果你愿意,我可以进一步帮你

你可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • 内网还是公网
  • 文件大小 & 数量
  • 当前速度(MB/s)

我可以直接给你 一份可复制的优化配置

0