要限制 CentOS 上的 SFTP 访问速度,您可以使用 tc
(流量控制)工具来实现。以下是一个简单的示例,说明如何限制 SFTP 用户的上传和下载速度。
iproute
软件包。如果没有,请使用以下命令安装:sudo yum install iproute
/etc/systemd/system/sftp-limit@.service
的新 systemd 服务文件,其中 “@” 是一个占位符,表示用户名。在此文件中,添加以下内容:[Unit]
Description=Limit SFTP speed for user %i
[Service]
Type=simple
ExecStart=/usr/bin/tc qdisc add dev eth0 root handle 1: htb default 30
ExecStart=/usr/bin/tc class add dev eth0 parent 1: classid 1:%i htb rate 1mbit ceil 1mbit
ExecStart=/usr/bin/tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst %i flowid 1:%i
ExecStop=/usr/bin/tc qdisc del dev eth0 root
[Install]
WantedBy=multi-user.target
在这个文件中,我们使用 tc
命令为每个 SFTP 用户创建了一个新的队列规则(qdisc),并为其分配了一个类(class)。这里我们将速度限制为 1 Mbps,您可以根据需要更改 rate
和 ceil
参数。
sudo systemctl enable sftp-limit@username.service
sudo systemctl daemon-reload
现在,您已经成功限制了指定用户的 SFTP 访问速度。请注意,这个方法仅适用于通过 SSH 连接的用户,并且需要在每次系统重启后重新启用服务。为了使这些设置在系统启动时自动生效,您可以将上述 systemctl enable
命令添加到用户的登录脚本中(例如 ~/.bashrc
或 ~/.bash_profile
)。