如何设置SFTP传输速率限制
如何设置SFTP传输速率限制
SFTP(SSH File Transfer Protocol)传输速率限制可通过OpenSSH配置(推荐,原生支持)或操作系统流量控制工具(如tc)实现。以下是具体方法:
一、通过OpenSSH配置(推荐)
OpenSSH的sshd_config文件支持直接限制用户或组的SFTP传输速率,适用于大多数Linux发行版(如Ubuntu、CentOS、Debian)。
1. 编辑sshd_config文件
使用文本编辑器打开SSH配置文件:
sudo nano /etc/ssh/sshd_config
2. 针对特定用户设置速率限制
在文件末尾添加以下内容,替换<
username>
为目标用户名,<
bandwidth_limit>
为限制速率(单位:字节/秒,如1MB/s=1048576字节/秒):
Match User <
username>
ForceCommand internal-sftp # 强制使用SFTP
ChrootDirectory %h # 可选:限制用户只能访问家目录
AllowTcpForwarding no # 禁用TCP转发
X11Forwarding no # 禁用X11转发
LimitBandwidth <
bandwidth_limit>
# 限制总带宽(字节/秒)
例如,限制用户john的传输速率为1MB/s:
Match User john
ForceCommand internal-sftp
ChrootDirectory /home/john
LimitBandwidth 1048576
3. 针对用户组设置速率限制
若需限制整个用户组的速率,可添加以下内容(替换<
groupname>
为组名):
Match Group <
groupname>
ForceCommand internal-sftp
LimitBandwidth <
bandwidth_limit>
例如,限制sftpusers组的传输速率为512KB/s(524288字节/秒):
Match Group sftpusers
ForceCommand internal-sftp
LimitBandwidth 524288
4. 重启SSH服务生效
保存配置后,重启SSH服务使更改生效:
sudo systemctl restart sshd # 大多数现代Linux发行版
# 或
sudo service ssh restart # 旧版系统(如CentOS 6)
二、通过操作系统流量控制工具(tc)
若OpenSSH版本不支持LimitBandwidth,或需要更细粒度的流量控制(如限制特定端口的带宽),可使用tc(Traffic Control)工具。
1. 安装iproute2(包含tc工具)
大多数Linux发行版已预装iproute2,若未安装,可通过以下命令安装:
# Debian/Ubuntu
sudo apt install iproute2
# CentOS/RHEL
sudo yum install iproute
2. 配置带宽限制规则
以下命令将SSH端口(默认22)的带宽限制为1Mbps(上传/下载):
# 清除现有队列规则(可选)
sudo tc qdisc del dev eth0 root 2>
/dev/null
# 添加HTB队列规则(根节点)
sudo tc qdisc add dev eth0 root handle 1: htb default 30
# 添加父类(总带宽1Mbps)
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 1mbit
# 添加子类(可选,用于更细粒度划分)
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1mbit ceil 1mbit
# 将SSH端口(22)关联到子类
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 22 0xffff flowid 1:10
说明:
eth0:网络接口名称(可通过ip a命令查看,如ens33、wlan0等);rate 1mbit:限制带宽为1Mbps;ceil 1mbit:最大允许带宽(可选,若不设置则等于rate)。
3. 持久化配置
tc规则重启后会失效,需将其添加到系统启动脚本(如/etc/rc.local)或使用cron定时任务恢复。
三、注意事项
- 权限设置:若使用
ChrootDirectory,需确保用户家目录权限为755,且所有者为root(如sudo chown root:root /home/username),否则用户无法登录。 - 工具兼容性:
LimitBandwidth选项需OpenSSH 7.9及以上版本支持,若版本过低,建议升级OpenSSH或使用tc工具。 - 测试验证:配置完成后,可通过
scp或sftp命令测试传输速率(如time scp large_file user@server:/path),确认速率是否符合预期。
以上方法可根据实际需求选择使用,OpenSSH配置简单直观,适合大多数场景;tc工具则适合需要更复杂流量控制的场景。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何设置SFTP传输速率限制
本文地址: https://pptw.com/jishu/737379.html
