首页主机资讯SFTP配置中如何设置文件传输限制

SFTP配置中如何设置文件传输限制

时间2025-10-09 22:30:03发布访客分类主机资讯浏览1209
导读:SFTP配置中设置文件传输限制的方法 一、文件大小限制 通过修改SSH主配置文件sshd_config,使用LimitFileSize参数限制单个文件的最大传输大小。该参数支持字节(B)、千字节(KB)、兆字节(MB)、吉字节(GB)等单位...

SFTP配置中设置文件传输限制的方法

一、文件大小限制

通过修改SSH主配置文件sshd_config,使用LimitFileSize参数限制单个文件的最大传输大小。该参数支持字节(B)、千字节(KB)、兆字节(MB)、吉字节(GB)等单位,需配合Match指令针对特定用户或用户组生效。
操作步骤

  1. 使用root权限编辑/etc/ssh/sshd_config文件:
    sudo nano /etc/ssh/sshd_config
    
  2. 在文件末尾添加以下内容(以限制sftpusers用户组的单文件大小为100MB为例):
    Match Group sftpusers
        ForceCommand internal-sftp
        ChrootDirectory %h
        AllowTcpForwarding no
        X11Forwarding no
        LimitFileSize 100M  # 关键配置:限制单文件最大100MB
    
  3. 保存文件并重启SSH服务使配置生效:
    sudo systemctl restart ssh
    

说明:若未使用Match指令,LimitFileSize将对所有SFTP用户生效;若需限制所有用户,可直接在sshd_config全局添加该参数。

二、传输速率限制

1. 使用OpenSSH内置参数(推荐)

通过sshd_config中的LimitRate参数限制传输速率,支持字节/秒(B/s)为单位,可分别控制上传/下载速率(部分版本支持UploadRate/DownloadRate)。
操作步骤

  1. 编辑/etc/ssh/sshd_config文件:
    sudo nano /etc/ssh/sshd_config
    
  2. 添加以下内容(以限制sftpusers用户组的传输速率为1MB/s为例):
    Match Group sftpusers
        ForceCommand internal-sftp
        ChrootDirectory %h
        AllowTcpForwarding no
        X11Forwarding no
        LimitRate 1M  # 关键配置:限制传输速率为1MB/s
    
  3. 重启SSH服务:
    sudo systemctl restart ssh
    

说明LimitRate是OpenSSH原生支持的参数,兼容性好,无需额外安装工具。

2. 使用Traffic Control(tc)工具

通过Linux内核的tc工具限制SFTP流量的带宽,适用于需要精细化控制的场景(如限制特定端口的带宽)。
操作步骤

  1. 安装iproute工具包(包含tc):
    sudo yum install iproute  # CentOS
    sudo apt-get install iproute2  # Debian/Ubuntu
    
  2. 清除现有队列规则(可选):
    sudo tc qdisc del dev eth0 root  # eth0为网络接口,需根据实际情况修改
    
  3. 添加HTB(Hierarchical Token Bucket)队列规则:
    sudo tc qdisc add dev eth0 root handle 1: htb default 30
    
  4. 创建父类(总带宽)和子类(SFTP带宽):
    sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit  # 总带宽100Mbps
    sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1mbit ceil 1mbit  # SFTP带宽1Mbps
    
  5. 标记SFTP流量并绑定到子类:
    sudo iptables -A OUTPUT -t mangle -p tcp --dport 22 -j MARK --set-mark 10
    sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 10 fw flowid 1:10
    
  6. 使配置永久生效:将上述命令添加到/etc/rc.local文件中(需赋予执行权限)。

3. 使用cgroups(控制组)

通过cgroups限制SFTP进程的网络带宽,适用于需要进程级控制的场景。
操作步骤

  1. 安装libcgroup-tools工具包:
    sudo yum install libcgroup-tools  # CentOS
    sudo apt-get install cgroup-tools  # Debian/Ubuntu
    
  2. 创建cgroup并设置类ID:
    sudo cgcreate -g net_cls:/sftp_limit
    echo 0x10001 | sudo tee /sys/fs/cgroup/net_cls/sftp_limit/net_cls.classid
    
  3. 将SFTP用户加入cgroup:
    sudo usermod -aG sftp_limit <
        username>
          # <
        username>
        为需限制的SFTP用户名
    
  4. 配置tc限制带宽(同上述tc步骤,将流量绑定到cgroup的类ID)。

三、并发连接数限制

通过限制SFTP的并发连接数,避免服务器资源被过度占用。

1. 限制服务器全局并发连接数

编辑/etc/ssh/sshd_config文件,添加或修改MaxSessions参数(控制所有用户的总会话数)和MaxStartups参数(控制并发连接速率):

MaxSessions 10  # 限制所有用户的总并发会话数为10
MaxStartups 10:30:100  # 最大并发连接数10,30分钟内连接速率限制,允许增量100

保存后重启SSH服务:

sudo systemctl restart ssh

2. 限制单个用户并发连接数

sshd_config中使用MaxSessionsPerUser参数(部分版本支持),或在/etc/security/limits.conf中添加限制:

# 方法1:sshd_config(需OpenSSH支持)
Match User <
    username>
    
    MaxSessionsPerUser 5  # 限制<
    username>
    用户的并发会话数为5

# 方法2:limits.conf(需PAM支持)
<
    username>
     hard maxlogins 5  # 限制<
    username>
    用户的最大登录数为5

保存后重启SSH服务或重新登录用户使配置生效。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: SFTP配置中如何设置文件传输限制
本文地址: https://pptw.com/jishu/721855.html
如何配置Debian SFTP的用户组 怎样设置SFTP的端口转发

游客 回复需填写必要信息