温馨提示×

如何配置SFTP的带宽限制

小樊
48
2025-09-08 06:10:54
栏目: 编程语言

以下是不同系统配置SFTP带宽限制的常见方法:

Linux系统(以CentOS/Debian为例)

1. 使用tc工具(推荐)

  • 安装工具
    # CentOS/RHEL  
    sudo yum install iproute  
    # Debian/Ubuntu  
    sudo apt-get install iproute2  
    
  • 配置规则(以限制上传1Mbps、下载2Mbps为例):
    # 创建队列规则  
    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服务。

2. 使用OpenSSH的Match指令(需较新版本)

  • 编辑/etc/ssh/sshd_config
    Match User <用户名>  # 或 Match LocalPort 22  
        BandwidthLimit <限制值>  # 单位:kbps(如1024表示1Mbps)  
        # 或分别限制上传/下载(部分版本支持)  
        # LimitStream 1mbit上行  
        # LimitStream 2mbit下行  
    
  • 重启SSH服务:
    sudo systemctl restart sshd  
    

3. 第三方工具

  • trickle(用户级限制):
    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工具需根据实际网络接口(如eth0ens33)调整,可通过ip a查看接口名称。
  • 生产环境配置前需测试,避免影响正常服务。
  • 部分旧系统需升级OpenSSH版本以支持BandwidthLimitLimitStream

0