以下是不同系统配置SFTP带宽限制的常见方法:
tc
工具(推荐)# CentOS/RHEL
sudo yum install iproute
# Debian/Ubuntu
sudo apt-get install iproute2
# 创建队列规则
sudo tc qdisc add dev eth0 root handle 1: htb default 30
# 创建类(父类限制总带宽,子类限制SFTP带宽)
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit ceil 10mbit
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 2mbit ceil 2mbit # 下载
sudo tc class add dev eth0 parent 1:1 classid 1:20 htb rate 1mbit ceil 1mbit # 上传
# 关联SFTP端口(默认22)
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 22 0xffff flowid 1:10 # 下载
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip sport 22 0xffff flowid 1:20 # 上传
/etc/rc.local
或使用systemd
服务。Match
指令(需较新版本)/etc/ssh/sshd_config
:Match User <用户名> # 或 Match LocalPort 22
BandwidthLimit <限制值> # 单位:kbps(如1024表示1Mbps)
# 或分别限制上传/下载(部分版本支持)
# LimitStream 1mbit上行
# LimitStream 2mbit下行
sudo systemctl restart sshd
sudo apt-get install trickle # Debian/Ubuntu
sudo yum install trickle # CentOS/RHEL
# 在sshd_config中指定用户使用trickle
Match User <用户名>
ForceCommand /usr/bin/trickle -d <下载限制> -u <上传限制> sftp-server
tc
工具需根据实际网络接口(如eth0
、ens33
)调整,可通过ip a
查看接口名称。BandwidthLimit
或LimitStream
。