ubuntu

Ubuntu SFTP如何设置传输限制

小樊
45
2025-10-25 13:40:28
栏目: 智能运维

Ubuntu SFTP传输限制设置(速度与文件大小)

在Ubuntu系统中,SFTP传输限制主要通过OpenSSH服务器配置(速度、文件大小)和流量控制工具(带宽)实现,以下是具体步骤:

一、基础准备

在配置限制前,需确保已安装OpenSSH服务器,并创建专用SFTP用户(若未完成):

# 安装OpenSSH服务器(若未安装)
sudo apt update && sudo apt install openssh-server

# 创建SFTP专用用户(以"sftpuser"为例)
sudo adduser sftpuser
sudo usermod -aG sftp sftpuser  # 将用户加入sftp组(需提前创建:sudo groupadd sftp)

# 设置用户家目录权限(关键:防止用户越权)
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser

注:家目录权限必须为root:root且权限为755,否则SFTP连接会失败。

二、通过OpenSSH配置传输速度限制

编辑SSH配置文件(/etc/ssh/sshd_config),通过Match指令针对特定用户/组设置速度限制:

sudo nano /etc/ssh/sshd_config

在文件末尾添加以下内容(以用户sftpuser为例):

# 匹配指定用户
Match User sftpuser
    # 强制使用SFTP(禁用Shell访问)
    ForceCommand internal-sftp
    # 限制上传速度(1Mbps = 1024kbps)
    LimitBandwidth 1024
    # 限制下载速度(1Mbps = 1024kbps)
    LimitBandwidthUp 1024
    # 其他可选限制(如禁用端口转发)
    AllowTcpForwarding no
    X11Forwarding no

若需针对用户组(如sftp组)设置,将Match User改为Match Group sftp即可。

三、通过OpenSSH配置文件大小限制

sshd_config中,通过LimitFileSize指令限制单个文件的最大传输大小(支持BytesKBMBGB单位):

# 继续在Match块中添加(或全局设置)
Match User sftpuser
    # 限制单个文件最大100MB
    LimitFileSize 100M

此配置会阻止用户上传/下载超过100MB的文件。

四、通过tc工具设置带宽限制(高级)

若需更精细的带宽控制(如区分上传/下载带宽),可使用Linux自带的tc(Traffic Control)工具:

# 安装iproute2(包含tc工具,Ubuntu默认已安装)
sudo apt install iproute2

# 1. 清除现有队列规则(避免冲突)
sudo tc qdisc del dev eth0 root 2>/dev/null

# 2. 添加HTB队列(根队列)
sudo tc qdisc add dev eth0 root handle 1: htb default 30

# 3. 创建主类(总带宽10Mbps)
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit ceil 10mbit

# 4. 创建上传子类(2Mbps)
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 2mbit ceil 2mbit

# 5. 创建下载子类(8Mbps)
sudo tc class add dev eth0 parent 1:1 classid 1:20 htb rate 8mbit ceil 8mbit

# 6. 添加过滤器(将SFTP流量(端口22)关联到对应子类)
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 22 0xffff flowid 1:20  # 下载
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip sport 22 0xffff flowid 1:10  # 上传

注:eth0为网络接口名称(可通过ip a命令查看),rate为保证带宽,ceil为最大带宽。

五、通过wondershaper简化带宽限制

wondershapertc的封装工具,简化了带宽限制命令:

# 安装wondershaper
sudo apt install wondershaper

# 限制eth0接口的下载速度(100kbps)和上传速度(50kbps)
sudo wondershaper eth0 100 50

# 查看当前限制状态
sudo wondershaper status eth0

# 删除限制
sudo wondershaper clear eth0

注:wondershaper会影响系统整体网络性能,建议仅在简单场景下使用。

六、重启SSH服务使配置生效

无论使用哪种方法,修改配置后均需重启SSH服务:

sudo systemctl restart sshd  # Ubuntu 16.04及以上版本
# 或
sudo service ssh restart     # 旧版本

注意事项

  1. 权限问题:家目录权限错误是SFTP连接失败的常见原因,务必确保root:root755权限。
  2. 测试配置:修改配置前建议备份原文件(如sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak)。
  3. 多用户配置:若需为多个用户设置不同限制,可通过Match UserMatch Group分别配置。
  4. 持久化tcwondershaper的配置需添加到启动脚本(如/etc/rc.local)以实现重启后生效。

0
看了该问题的人还看了