温馨提示×

debian sftp如何限速

小樊
38
2026-10-12 10:30:27
栏目: 智能运维

在 Debian 上限制 SFTP 传输速度,常见做法有几种,取决于你是限制整个系统/用户/目录,还是临时限速。下面按使用场景介绍。


一、使用 OpenSSH + 系统 TC(最通用,推荐)

OpenSSH 本身 不支持 SFTP 限速,但可以通过 Linux tc(traffic control) 限制端口流量。

示例:限制 22 端口 SFTP 速度为 1Mbps

# 安装 tc
apt update
apt install -y iproute2

# 假设网卡是 eth0
TC_DEV=eth0
LIMIT=1mbit   # 1Mbps

tc qdisc add dev $TC_DEV root handle 1: htb default 10
tc class add dev $TC_DEV parent 1: classid 1:1 htb rate 1000mbit
tc class add dev $TC_DEV parent 1:1 classid 1:10 htb rate $LIMIT

# 限制目的端口 22(SFTP)
tc filter add dev $TC_DEV protocol ip parent 1:0 prio 1 u32 \
  match ip dport 22 0xffff flowid 1:10

⚠️ 注意:

  • 这是 服务器整体 22 端口限速
  • 对所有 SSH / SFTP 用户生效
  • 重启后失效(可写 systemd 服务)

二、使用 rssh + scp 限速(不推荐)

rssh 已多年不维护,不推荐新环境使用。


三、使用 proftpd / vsftpd(FTP,不是 SFTP)

如果你愿意改用 FTPS,可以直接限速:

vsftpd 示例

local_max_rate=100000   # 100KB/s

⚠️ 这是 FTP,不是 SFTP(SSH)


四、使用 sftp 客户端限速(临时)

如果你是 客户端限速:

sftp -l 100 user@host
  • -l 单位是 KB/s
  • 只限制当前客户端

五、用户级限速(高级方案)

方案 A:每个用户独立网络命名空间 + tc

适合多用户服务器,但配置复杂。

方案 B:使用 systemd 限制 SSH 服务(不精确)

[Service]
IOBandwidthMax=/dev/sda 1M

⚠️ 只对磁盘 IO,不对网络


六、推荐方案总结

需求 推荐方案
整个服务器 SFTP 限速 tc 限制 22 端口
单个用户限速 tc + 用户 IP / namespace
客户端临时限速 sftp -l
新项目 考虑 FTPS + vsftpd

如果你愿意,可以告诉我:

  • 是 服务器限速还是客户端
  • 是否需要 按用户限速
  • Debian 版本(11 / 12)

我可以给你一份可直接用的脚本。

0 踩