溫馨提示×

SFTP配置中如何設置文件傳輸限制

小樊
37
2025-10-09 12:06:44
欄目: 編程語言

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服務或重新登錄用戶使配置生效。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女