在 Debian 上,SFTP 本身(OpenSSH 的 sftp-server)是支持限速的,但不是在 sftp 命令里直接设,而是通过 SSH 服务端配置或 sftp-server 参数 来实现。
下面给你几种常见、可用的方式(从推荐到补充)。
OpenSSH 的 sftp-server 支持两个参数:
-l:下载限速(per connection,单位 KB/s)-u:上传限速(per connection,单位 KB/s)编辑:
/etc/ssh/sshd_config
找到或添加:
Subsystem sftp internal-sftp
改为(例如限速 1MB/s):
Subsystem sftp /usr/lib/openssh/sftp-server -l 1024 -u 1024
1024 = 1024 KB/s = 1 MB/s
这是 每个连接 的限速
重启 ssh:
systemctl restart ssh
✅ 优点:
❌ 缺点:
可以用 Match + ForceCommand 实现不同用户不同限速。
Match Group sftpusers
ForceCommand internal-sftp -l 512 -u 512
或指定 sftp-server 路径:
Match User testuser
ForceCommand /usr/lib/openssh/sftp-server -l 256 -u 256
重启 ssh:
systemctl restart ssh
trickle -u 100 -d 100 sftp user@host
⚠️ 问题:
太重,不适合 SFTP 单独限速。
一般不建议,除非你有特殊需求。
| 方式 | 是否推荐 | 说明 |
|---|---|---|
| sftp-server -l -u | ⭐⭐⭐⭐ | 最简单、官方支持 |
| Match + ForceCommand | ⭐⭐⭐⭐ | 按用户限速 |
| trickle | ⭐ | 仅客户端 |
| tc | ⭐ | 太复杂 |
如果你愿意,可以告诉我:
我可以直接帮你写一份完整配置。