温馨提示×

centos sftp能限速吗

小樊
45
2026-09-06 03:15:32
栏目: 智能运维

CentOS 上,SFTP 本身不能直接限速,但可以通过 底层机制 来实现限速。常见可行方案如下:


一、通过 SSHD + 网络层限速(推荐)

SFTP 是基于 SSH 的,所以可以在 SSH 服务或系统网络层 做限制。

方案 1:使用 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

✅ 优点:稳定、系统级
❌ 缺点:配置复杂


方案 2:使用 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

❌ 不稳定,容易出问题,不推荐生产环境


三、换用支持限速的 SFTP 服务(最佳可控方案)

如果你有控制权,建议:

✅ 使用 proftpd / vsftpd(FTP/SFTP)

  • vsftpd 支持:
anon_max_rate=1000000
local_max_rate=1000000

✅ 使用 rssh + scp 限速脚本


四、总结建议

场景 推荐方案
系统级 SFTP 限速 tc
简单粗暴 iptables hashlimit
可控 FTP vsftpd
单用户脚本 pv

如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • 单用户还是所有用户
  • 想限制 上传 / 下载 / 总带宽

我可以给你一套可直接复制用的配置

0