Linux 下 SFTP 传输慢通常是多方面原因叠加造成的,下面按最常见 → 较少见给你系统梳理一下,并给出对应排查/优化方法。
SFTP 基于 SSH,受网络影响极大:
现象
scp / sftp 都慢ping 延迟高或丢包排查
ping 目标IP
mtr 目标IP
解决
SFTP = SSH + 加密
如果服务端/客户端 CPU 弱,会非常慢。
常见瓶颈
排查
top
# 看 sshd 是否 CPU 占用高
优化
sftp -oCiphers=aes128-gcm@openssh.com \
-oMACs=umac-128@openssh.com user@host
或服务器端:
Ciphers aes128-gcm@openssh.com,aes256-gcm@openssh.com
SFTP 每传输一个文件都要握手
现象
解决
tar czf - dir | ssh user@host "tar xzf -"
或
rsync -avz dir/ user@host:/path/
默认:
Subsystem sftp internal-sftp
✅ 正确
❌ 如果是:
Subsystem sftp /usr/lib/sftp-server
可能慢。
例如:
检查
getenforce
排查
iostat -x 1
✅ 推荐:
sftp 命令rsynclftplftp sftp://user@host -e "mirror -R local remote"
# 1. 网络
ping host
mtr host
# 2. CPU
top
# 3. 小文件?
ls | wc -l
# 4. 测试大文件
dd if=/dev/zero of=test bs=1M count=500
sftp user@host
| 场景 | 推荐 |
|---|---|
| 大文件 | scp / rsync |
| 小文件多 | tar over ssh |
| 高延迟 | rsync |
| 极速 | bbcp / aspera |
如果你愿意,可以告诉我:
我可以直接给你一套最优配置。