centos

如何限制CentOS SFTP访问速度

小樊
46
2025-07-10 16:28:00
栏目: 智能运维

要限制CentOS上的SFTP访问速度,您可以使用tc(流量控制)工具来实现

  1. 首先,确保您已经安装了iproute包,它包含了tc工具。在大多数CentOS版本中,它应该已经预装了。如果没有,请使用以下命令安装:
sudo yum install iproute
  1. 创建一个名为sftp_qos的qos脚本,用于限制SFTP访问速度。使用文本编辑器创建一个新文件,例如:
sudo vi /usr/local/bin/sftp_qos
  1. 将以下内容粘贴到sftp_qos文件中,然后用实际的用户名和速度限制值替换<username><speed_limit>(例如,100kbps):
#!/bin/bash

# 设置用户名和速度限制(单位:kbps)
USERNAME="<username>"
SPEED_LIMIT="<speed_limit>"

# 获取用户的UID和GID
UID=$(id -u $USERNAME)
GID=$(id -g $USERNAME)

# 创建一个名为sftp_qos的tc队列规则
sudo tc qdisc add dev eth0 root handle 1: htb default 30
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate ${SPEED_LIMIT}kbps ceil ${SPEED_LIMIT}kbps

# 为SFTP用户创建一个子队列规则
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst <user_ip> flowid 1:1
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate ${SPEED_LIMIT}kbps ceil ${SPEED_LIMIT}kbps
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip sport 22 0xffff flowid 1:10
  1. 保存并关闭文件。然后,为脚本添加可执行权限:
sudo chmod +x /usr/local/bin/sftp_qos
  1. 每次需要限制SFTP访问速度时,运行此脚本,并使用实际的用户名和速度限制值替换<username><speed_limit>
sudo /usr/local/bin/sftp_qos
  1. 如果您想要删除限制,可以运行以下命令:
sudo tc qdisc del dev eth0 root

请注意,这个脚本仅适用于单个用户和一个网络接口。如果您有多个用户或多个网络接口,您需要根据实际情况修改脚本。

0
看了该问题的人还看了