Linux 下 SFTP 传输速度慢,通常不是“SFTP 本身慢”,而是网络、加密、磁盘、配置或客户端方式的问题。可以按下面顺序排查和优化。
# SFTP 测试
sftp user@host
> put bigfile
# 对比 scp
scp bigfile user@host:/tmp/
# 对比裸网络
iperf3 -c host
# 临时
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"
rsync -avz -e ssh bigfile user@host:/path/
vim /etc/ssh/sshd_config
# 提高吞吐量
Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com
MACs umac-128-etm@openssh.com
Compression no
# 提高并发
MaxSessions 50
重启:
systemctl restart sshd
sftp -o Ciphers=aes128-gcm@openssh.com \
-o MACs=umac-128-etm@openssh.com \
user@host
SFTP 慢 ≠ 网络慢
iostat -x 1
%util 接近 100% → 磁盘瓶颈SFTP 每个文件都有握手开销
✅ 解决:
tar czf - dir | ssh user@host "cd /path && tar xzf -"
或
rsync -avz dir/ user@host:/path/
| 场景 | 推荐 |
|---|---|
| 大文件 | scp / rsync |
| 海量小文件 | tar over ssh |
| 极速传输 | lftp + sftp 多线程 |
| 跨云 | rclone |
lftp sftp://user@host
mirror -P 10 /local /remote
✅ 是否跨地域
✅ 是否小文件太多
✅ 是否磁盘 IO 满
✅ 是否用了弱加密算法
✅ 是否只用单连接
如果你愿意,可以告诉我:
我可以直接给你一套最优配置。