在 Ubuntu 上,SFTP 本身(OpenSSH 自带的 sftp-server)是“不直接支持限速”的,但可以通过以下几种方式实现限速。
OpenSSH 的 sftp-server 没有内置 speed limit 参数。
所以单纯用系统自带 SFTP 无法像 scp -l 那样限速。
❌
sftp命令没有-l限速参数
❌sshd_config中没有 SFTP 限速项
trickle 限制 SFTP 客户端速度(最简单)trickle 可以限制任意程序的网络带宽。
sudo apt update
sudo apt install trickle
trickle -s -d 100 -u 50 sftp user@host
-d 100:下载限速 100 KB/s-u 50:上传限速 50 KB/s✅ 适合:你控制客户端机器
iptables + tc 限速(最通用)适合 限制某个用户 / IP 的 SFTP 速度
sudo tc qdisc add dev eth0 root handle 1: htb
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
match ip src 192.168.1.100 flowid 1:1
✅ 适合:服务器管理员
❌ 配置复杂
proftpd / vsftpd(非 SFTP,但支持限速)如果你不一定非要用 SFTP(可以用 FTP/FTPS):
# /etc/vsftpd.conf
local_max_rate=100000
✅ 配置简单
❌ 不是 SFTP(是 FTP)
rsync 代替 SFTP(带限速)如果是传文件,不只是交互:
rsync -av --bwlimit=100 user@host:/path /local
--bwlimit=100 = 100 KB/s✅ 最稳定
✅ 实际生产常用
| 方案 | 是否 SFTP | 难度 | 建议 |
|---|---|---|---|
| trickle | ✅ | ⭐ | 客户端限速首选 |
| iptables+tc | ✅ | ⭐⭐⭐ | 服务器强制限速 |
| vsftpd | ❌ | ⭐ | 不强制 SFTP |
| rsync | ✅(SSH) | ⭐ | 文件同步首选 |
如果你愿意,可以告诉我:
我可以给你可直接用的完整配置。