SFTP配置中如何设置文件传输限制
SFTP配置中设置文件传输限制的方法
一、文件大小限制
通过修改SSH主配置文件sshd_config
,使用LimitFileSize
参数限制单个文件的最大传输大小。该参数支持字节(B)、千字节(KB)、兆字节(MB)、吉字节(GB)等单位,需配合Match
指令针对特定用户或用户组生效。
操作步骤:
- 使用root权限编辑
/etc/ssh/sshd_config
文件:sudo nano /etc/ssh/sshd_config
- 在文件末尾添加以下内容(以限制
sftpusers
用户组的单文件大小为100MB为例):Match Group sftpusers ForceCommand internal-sftp ChrootDirectory %h AllowTcpForwarding no X11Forwarding no LimitFileSize 100M # 关键配置:限制单文件最大100MB
- 保存文件并重启SSH服务使配置生效:
sudo systemctl restart ssh
说明:若未使用Match
指令,LimitFileSize
将对所有SFTP用户生效;若需限制所有用户,可直接在sshd_config
全局添加该参数。
二、传输速率限制
1. 使用OpenSSH内置参数(推荐)
通过sshd_config
中的LimitRate
参数限制传输速率,支持字节/秒(B/s)为单位,可分别控制上传/下载速率(部分版本支持UploadRate
/DownloadRate
)。
操作步骤:
- 编辑
/etc/ssh/sshd_config
文件:sudo nano /etc/ssh/sshd_config
- 添加以下内容(以限制
sftpusers
用户组的传输速率为1MB/s为例):Match Group sftpusers ForceCommand internal-sftp ChrootDirectory %h AllowTcpForwarding no X11Forwarding no LimitRate 1M # 关键配置:限制传输速率为1MB/s
- 重启SSH服务:
sudo systemctl restart ssh
说明:LimitRate
是OpenSSH原生支持的参数,兼容性好,无需额外安装工具。
2. 使用Traffic Control(tc)工具
通过Linux内核的tc
工具限制SFTP流量的带宽,适用于需要精细化控制的场景(如限制特定端口的带宽)。
操作步骤:
- 安装
iproute
工具包(包含tc
):sudo yum install iproute # CentOS sudo apt-get install iproute2 # Debian/Ubuntu
- 清除现有队列规则(可选):
sudo tc qdisc del dev eth0 root # eth0为网络接口,需根据实际情况修改
- 添加HTB(Hierarchical Token Bucket)队列规则:
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 100mbit # 总带宽100Mbps sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1mbit ceil 1mbit # SFTP带宽1Mbps
- 标记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
- 使配置永久生效:将上述命令添加到
/etc/rc.local
文件中(需赋予执行权限)。
3. 使用cgroups(控制组)
通过cgroups
限制SFTP进程的网络带宽,适用于需要进程级控制的场景。
操作步骤:
- 安装
libcgroup-tools
工具包:sudo yum install libcgroup-tools # CentOS sudo apt-get install cgroup-tools # Debian/Ubuntu
- 创建cgroup并设置类ID:
sudo cgcreate -g net_cls:/sftp_limit echo 0x10001 | sudo tee /sys/fs/cgroup/net_cls/sftp_limit/net_cls.classid
- 将SFTP用户加入cgroup:
sudo usermod -aG sftp_limit < username> # < username> 为需限制的SFTP用户名
- 配置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