debian

Debian SFTP如何实现带宽限制

小樊
39
2025-07-27 06:35:32
栏目: 智能运维

在Debian系统中,可以使用rssh(Restricted Shell)或者OpenSSH服务器配合tc(Traffic Control)工具来实现SFTP带宽限制

方法一:使用rssh

  1. 安装rssh:
sudo apt-get update
sudo apt-get install rssh
  1. 配置rssh:

编辑/etc/rssh.conf文件,取消以下行的注释并设置相应的带宽限制值(单位:kbps):

# Limit SFTP bandwidth
bandwidth_sftp = 1024

这里的1024表示限制为1Mbps。你可以根据需要调整该值。

  1. 重启rssh服务:
sudo systemctl restart rssh
  1. 配置SSH以使用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的用户组,并将需要限制带宽的用户添加到该组。

  1. 创建sftpusers用户组并添加用户:
sudo groupadd sftpusers
sudo usermod -aG sftpusers your_username

your_username替换为你想要限制带宽的用户名。

  1. 重启SSH服务:
sudo systemctl restart ssh

现在,使用SFTP连接的用户将受到带宽限制。

方法二:使用OpenSSH和tc

  1. 安装OpenSSH服务器:
sudo apt-get update
sudo apt-get install openssh-server
  1. 创建一个新的qdisc(队列规则):
sudo tc qdisc add dev eth0 root handle 1: htb default 30

eth0替换为你的网络接口名称。

  1. 为SFTP流量创建一个类:
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 1mbit

这里的1mbit表示限制为1Mbps。你可以根据需要调整该值。

  1. 创建一个过滤器,将SFTP流量分配给新创建的类:
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 22 0xffff flowid 1:1
  1. 重启SSH服务:
sudo systemctl restart ssh

现在,使用SFTP连接的用户将受到带宽限制。

注意:这种方法可能会影响到其他使用SSH的服务,因为它是基于端口22的。如果你想要更精确地限制SFTP带宽,可以考虑使用cgroups或者其他流量整形工具。

0
看了该问题的人还看了