在 CentOS 上,SFTP 本身不能直接限速,但可以通过 底层机制 来实现限速。常见可行方案如下:
SFTP 是基于 SSH 的,所以可以在 SSH 服务或系统网络层 做限制。
tc(Linux 流量控制)✅ 最常用适合对整个服务器或某个 IP 限速。
示例:限制 eth0 出口带宽为 1Mbps
tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
按 IP 限速(需结合 iptables + tc):
# 标记 SFTP 用户 IP
iptables -t mangle -A OUTPUT -p tcp --dport 22 -j MARK --set-mark 10
# 对 mark 10 限速
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:10 htb rate 1mbit
tc filter add dev eth0 protocol ip parent 1: handle 10 fw flowid 1:10
✅ 优点:稳定、系统级
❌ 缺点:配置复杂
iptables + hashlimit(简单限速)iptables -A OUTPUT -p tcp --dport 22 -m hashlimit \
--hashlimit-mode srcip \
--hashlimit-above 1mb/s \
--hashlimit-name sftp_limit \
-j DROP
✅ 简单
❌ 不是“平滑限速”,更像限流
openssh + ForceCommand + pv(不太推荐)ForceCommand pv -L 1m | sftp-server
❌ 不稳定,容易出问题,不推荐生产环境
如果你有控制权,建议:
proftpd / vsftpd(FTP/SFTP)vsftpd 支持:anon_max_rate=1000000
local_max_rate=1000000
rssh + scp 限速脚本| 场景 | 推荐方案 |
|---|---|
| 系统级 SFTP 限速 | tc |
| 简单粗暴 | iptables hashlimit |
| 可控 FTP | vsftpd |
| 单用户脚本 | pv |
如果你愿意,可以告诉我:
我可以给你一套可直接复制用的配置。