在Debian系统中,可以使用rssh
(Restricted Shell)或者OpenSSH
服务器配合tc
(Traffic Control)工具来实现SFTP带宽限制
方法一:使用rssh
sudo apt-get update
sudo apt-get install rssh
编辑/etc/rssh.conf
文件,取消以下行的注释并设置相应的带宽限制值(单位:kbps):
# Limit SFTP bandwidth
bandwidth_sftp = 1024
这里的1024
表示限制为1Mbps。你可以根据需要调整该值。
sudo systemctl restart rssh
编辑/etc/ssh/sshd_config
文件,找到Subsystem sftp
这一行,将其更改为:
Subsystem sftp internal-sftp -l INFO -u 0022
然后,在文件末尾添加以下内容:
Match group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
这里,我们创建了一个名为sftpusers
的用户组,并将需要限制带宽的用户添加到该组。
sudo groupadd sftpusers
sudo usermod -aG sftpusers your_username
将your_username
替换为你想要限制带宽的用户名。
sudo systemctl restart ssh
现在,使用SFTP连接的用户将受到带宽限制。
方法二:使用OpenSSH和tc
sudo apt-get update
sudo apt-get install openssh-server
sudo tc qdisc add dev eth0 root handle 1: htb default 30
将eth0
替换为你的网络接口名称。
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 1mbit
这里的1mbit
表示限制为1Mbps。你可以根据需要调整该值。
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 22 0xffff flowid 1:1
sudo systemctl restart ssh
现在,使用SFTP连接的用户将受到带宽限制。
注意:这种方法可能会影响到其他使用SSH的服务,因为它是基于端口22的。如果你想要更精确地限制SFTP带宽,可以考虑使用cgroups
或者其他流量整形工具。