debian

Debian SFTP服务器如何设置带宽限制

小樊
49
2025-08-02 23:04:48
栏目: 云计算

在Debian系统上设置SFTP服务器的带宽限制,可以通过多种方法实现。以下介绍两种常用的方法:

方法一:使用 trickle 工具限制带宽

trickle 是一个轻量级的带宽控制工具,可以用来限制单个应用程序的网络带宽使用。

步骤:

  1. 安装 trickle

    打开终端并运行以下命令来安装 trickle

    sudo apt update
    sudo apt install trickle
    
  2. 配置 SSH 服务以使用 trickle

    编辑 SSH 配置文件 /etc/ssh/sshd_config,添加或修改以下内容:

    # 在文件末尾添加
    Match Group sftpusers
        ForceCommand internal-sftp
        AllowTcpForwarding no
        X11Forwarding no
        ChrootDirectory %h
        PermitTunnel no
        AllowAgentForwarding no
        # 使用 trickle 限制带宽
        ForceCommand /usr/bin/trickle -d 1024 -u 1024 sftp-server
    

    上述配置中,-d 1024-u 1024 分别限制下载和上传的带宽为1MB/s。你可以根据需要调整这些值。

  3. 创建用户组并分配用户

    创建一个专门用于SFTP的用户组,并将需要限制带宽的用户添加到该组:

    sudo groupadd sftpusers
    sudo usermod -aG sftpusers your_username
    

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

  4. 重启 SSH 服务

    使配置生效:

    sudo systemctl restart ssh
    
  5. 验证配置

    确保用户被正确限制带宽。可以通过登录SFTP并执行大文件传输来测试带宽限制是否生效。

注意事项:

方法二:使用 cgroups(控制组)限制带宽

cgroups 是Linux内核提供的一种资源管理机制,可以用来限制进程的资源使用,包括网络带宽。

步骤:

  1. 安装必要的工具

    安装 cgroup-toolsiproute2

    sudo apt update
    sudo apt install cgroup-tools iproute2
    
  2. 创建 cgroup

    创建一个新的cgroup用于限制SFTP带宽:

    sudo cgcreate -g net_cls:/sftp_bandwidth
    
  3. 设置带宽限制

    设置下载和上传的带宽限制(单位:kbps)。例如,限制为1Mbps:

    echo 1024 | sudo tee /sys/fs/cgroup/net_cls/sftp_bandwidth/net_cls.classid
    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 1mbit
    sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst <server_ip> flowid 1:1
    

    <server_ip> 替换为你的服务器IP地址。

  4. 将 SFTP 进程添加到 cgroup

    找到SFTP进程的PID并将其添加到cgroup:

    sudo cgclassify -g net_cls:sftp_bandwidth <sftp_pid>
    

    <sftp_pid> 替换为SFTP进程的PID。

  5. 持久化配置

    为了使配置在系统重启后仍然有效,可以将上述命令添加到 /etc/rc.local 文件中。

注意事项:

总结

以上两种方法各有优缺点,trickle 更适合简单场景,而 cgroups 提供了更细粒度的控制。根据你的具体需求选择合适的方法进行配置。

0
看了该问题的人还看了