首页主机资讯如何设置SFTP传输速率限制

如何设置SFTP传输速率限制

时间2025-10-29 00:33:03发布访客分类主机资讯浏览1053
导读:如何设置SFTP传输速率限制 SFTP(SSH File Transfer Protocol)传输速率限制可通过OpenSSH配置(推荐,原生支持)或操作系统流量控制工具(如tc)实现。以下是具体方法: 一、通过OpenSSH配置(推荐)...

如何设置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命令查看,如ens33wlan0等);
  • rate 1mbit:限制带宽为1Mbps;
  • ceil 1mbit:最大允许带宽(可选,若不设置则等于rate)。
3. 持久化配置

tc规则重启后会失效,需将其添加到系统启动脚本(如/etc/rc.local)或使用cron定时任务恢复。

三、注意事项

  1. 权限设置:若使用ChrootDirectory,需确保用户家目录权限为755,且所有者为root(如sudo chown root:root /home/username),否则用户无法登录。
  2. 工具兼容性LimitBandwidth选项需OpenSSH 7.9及以上版本支持,若版本过低,建议升级OpenSSH或使用tc工具。
  3. 测试验证:配置完成后,可通过scpsftp命令测试传输速率(如time scp large_file user@server:/path),确认速率是否符合预期。

以上方法可根据实际需求选择使用,OpenSSH配置简单直观,适合大多数场景;tc工具则适合需要更复杂流量控制的场景。

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


若转载请注明出处: 如何设置SFTP传输速率限制
本文地址: https://pptw.com/jishu/737379.html
如何配置SFTP端口转发 Linux驱动如何适配新硬件

游客 回复需填写必要信息