温馨提示×

centos sftp能限带宽吗

小樊
39
2026-09-27 03:50:54
栏目: 智能运维

在 CentOS 上,原生 SFTP(基于 OpenSSH)本身不能直接限制单个用户的带宽,但可以通过 几种方式实现限带宽。下面按“是否改架构 / 是否简单”给你梳理。


一、SFTP 本身(OpenSSH)能不能限带宽?

不能直接限。

OpenSSH 的 sftp-server 没有 --bwlimit 这种参数(和 scp 不一样)。
所以纯 SFTP + 默认 sshd 是不行的。


二、可行方案(推荐程度从高到低)

✅ 方案 1:用 rsync 代替 SFTP(最简单)

如果是手动传文件:

rsync -av --bwlimit=1000 user@host:/path /local/path
  • --bwlimit=1000 → 限制 1MB/s
  • 走 SSH,安全
  • ❌ 不是 SFTP 协议,不适用“必须用 SFTP 客户端”的场景

✅ 方案 2:使用 proftpd + SFTP(支持限速)

如果你必须用 SFTP 协议,这是最干净的方式。

安装

yum install proftpd proftpd-utils

配置 SFTP + 限速

<IfModule mod_sftp.c>
  SFTPEngine on
  Port 2222
  SFTPLog /var/log/proftpd/sftp.log

  SFTPHostKey /etc/ssh/ssh_host_rsa_key

  <Limit RATE>
    RateRead 1000
    RateWrite 1000
  </Limit>
</IfModule>
  • 单位:KB/s
  • 可针对用户 / 组限速

✅ 推荐用于“对外提供 SFTP 服务”


✅ 方案 3:用 tc(Linux 流量控制,系统级)

适合整台服务器或端口限速

tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
  • 限制整个网卡
  • 不区分用户
  • 运维复杂,不建议新手

✅ 方案 4:用 ssh + pv / pipe 限速(曲线救国)

ssh user@host "cat file" | pv -L 1m > file
  • 不是 SFTP
  • 仅适合脚本

❌ 方案 5:改 OpenSSH 源码

不推荐,维护成本极高


三、结论建议

场景 建议
必须用 SFTP 客户端 ✅ proftpd + SFTP
只是传文件 ✅ rsync --bwlimit
整台服务器限速 tc
单纯 OpenSSH SFTP ❌ 不支持

如果你愿意,我可以:

  • 给你 完整 proftpd SFTP 限速配置
  • 或按 用户 / 目录 / 端口 给你定制方案

你现在是 给用户限速 还是 整体限速?

0 踩