在 Ubuntu 上限制 SFTP 速度,常见有几种方式,取决于你是限制服务器端还是客户端,以及使用的是 OpenSSH SFTP 还是 其他 SFTP 服务。
openssh-server + tc(系统级限速)适用于 所有 SFTP / SSH 流量。
# 限制 eth0 出口带宽为 1Mbps
sudo tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
查看:
tc qdisc show dev eth0
删除:
sudo tc qdisc del dev eth0 root
✅ 优点:简单粗暴
❌ 缺点:影响所有 SSH 流量
pam + limits(不推荐 SFTP)ulimit 只能限制 CPU / 内存,不能限速网络。
ssh + ProxyCommand + pv(高级)在 客户端 限速(见下)
sftp + pv(推荐)pv 可以限制管道速度。
# 安装
sudo apt install pv
# 下载限速 1MB/s
pv -L 1m file.txt | sftp user@host:/remote/path
# 上传
sftp user@host <<EOF
put <(pv -L 1m localfile) /remote/file
EOF
rsync 通过 SSH(最实用)rsync -avz --bwlimit=1000 localfile user@host:/path/
--bwlimit=1000= 1000 KB/s
✅ 稳定、可控
✅ 常用于生产环境
scp 限速scp -l 1000 file user@host:/path/
-l单位是 Kbit/s(不是 KB)
restricted sftp + rsync/etc/ssh/sshd_configMatch User sftpuser
ChrootDirectory /sftp
ForceCommand internal-sftp
rsync / scp 并加限速| 场景 | 推荐方案 |
|---|---|
| 自己上传下载限速 | rsync --bwlimit |
| 限制服务器总带宽 | tc |
| 限制某用户 | SFTP + rsync |
| 简单临时 | scp -l |
如果你愿意,可以告诉我:
我可以给你更精确的配置示例。