在 Linux 下对 SFTP 限速,常见做法有以下几种,按使用场景从简单到专业说明:
sftp 命令本身(客户端限速)—— 不推荐标准 OpenSSH 的 sftp 客户端 不支持限速参数,所以不能直接在 sftp 命令里限速。
scp / rsync + 限速(替代方案)如果你只是传文件,可以用:
scp -l 800 file user@host:/path/
-l 单位是 Kbit/srsync -avz --bwlimit=1000 file user@host:/path/
--bwlimit 单位是 KB/s✅ 如果可以不用 sftp,这是最简单可靠的方式
ssh + pv 限速(sftp 可用)pv -L 1m file | ssh user@host "cat > /path/file"
-L 1m = 限速 1MB/sOpenSSH + ForceCommand + pv在 /etc/ssh/sshd_config:
Match User sftpuser
ForceCommand pv -L 500k | internal-sftp
⚠️ 实际不推荐,复杂且不稳定
rssh / MySecureShellapt install mysecureshell
配置:
<User sftpuser>
LimitDown 1000 # KB/s
LimitUp 500 # KB/s
</User>
✅ 支持:
tc(Linux 流量控制,系统级)适合服务器整体限制:
tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
| 场景 | 推荐方式 |
|---|---|
| 临时传文件 | rsync --bwlimit |
| 单文件 | pv + ssh |
| 多用户 SFTP | MySecureShell |
| 服务器整体 | tc |
如果你告诉我:
我可以给你更精确的配置示例。