在 CentOS 上 SFTP 传输速度慢,通常不是 SFTP 本身的问题,而是 网络、SSH 配置、磁盘或系统参数 导致的。下面按「常见原因 → 对应解决办法」给你一套排查和优化方案。
iperf3 -c 对端IP
或简单测试:
scp bigfile user@ip:/tmp/
scp 也慢 → 网络或 SSH 问题scp 快,只有 SFTP 慢 → 客户端/配置问题编辑:
vi /etc/ssh/sshd_config
修改或添加:
UseDNS no
GSSAPIAuthentication no
重启 SSH:
systemctl restart sshd
✅ 效果明显,尤其是内网或 DNS 慢的环境
SFTP 走 SSH,加密会吃 CPU。
查看支持的算法:
ssh -Q cipher
推荐在 sshd_config 中指定:
Ciphers aes128-ctr,aes192-ctr,aes256-ctr
MACs hmac-sha2-256
重启:
systemctl restart sshd
⚠️ 不要使用 aes256-cbc(慢)
Compression yes
⚠️ 大文件反而更慢(CPU 消耗)
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
✅ 对 跨机房 / 公网 效果明显
iostat -x 1
或:
iotop
如果是磁盘慢:
SFTP 是单线程的!
✅ 替代方案:
lftplftp sftp://user@ip -e "mirror --parallel=10 /local /remote"
rsyncrsync -avz -e ssh /local/ user@ip:/remote/
⚠️ SFTP 本身不适合大批量小文件
setenforce 0
firewalld 是否有限速规则✅ 必做三件事:
UseDNS no你可以告诉我:
我可以直接给你 一份可复制的优化配置。