温馨提示×

centos sftp如何限速传输

小樊
45
2026-10-05 22:37:26
栏目: 智能运维

在 CentOS 上限制 SFTP 传输速度,常见且可靠的做法有以下几种,按推荐程度从高到低说明。


一、使用 pam_exec + tc / wondershaper(不推荐,复杂)

这种方式实现复杂、维护成本高,不推荐。


二、✅ 推荐:使用 ProFTPD 或 vsftpd(如果你能换 FTP 服务)

如果你不是必须用 SFTP(SSH),而是可以用 FTP:

  • vsftpd 支持 local_max_rate
  • 配置简单

但如果你是 必须用 SFTP(基于 SSH),请看下面。


三、✅ 最推荐:使用 OpenSSH + bandwidth limit(Trickle / cgroup)

方案 1:客户端限速(最简单)

如果你是 客户端,可以直接限制:

rsync --bwlimit=1000 -avz /local/path user@centos:/remote/path

或 SFTP 客户端(如 FileZilla)自带限速。

✅ 适合:你控制客户端
❌ 不适合:限制服务器上的所有 SFTP 用户


方案 2:服务器端限制 SFTP(推荐 ✅)

方法 A:使用 cgroups 限制 sshd 进程带宽(高级但有效)

  1. 安装依赖
yum install libcgroup libcgroup-tools -y
  1. 创建 cgroup
cgcreate -g net_cls:/sftp_limit
  1. 使用 tc 限制网络(示例限速 1Mb)
tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
  1. 将 sshd 子进程加入 cgroup(需配合 systemd 或 pam)

⚠️ 配置复杂,适合运维经验丰富的场景。


方案 3:✅ 使用 rssh + scp 限速(不推荐)

rssh 已停止维护,不推荐。


四、✅ 最佳实践(企业常用):使用 SFTP + chroot + 外部限速代理

很多生产环境做法:

  • SFTP 只做文件交换
  • 前面加一层 反向代理 / 网闸 / 防火墙
  • 在防火墙或交换机上做限速

五、简单总结(直接选)

场景 推荐方案
自己控制客户端 rsync --bwlimit
限制服务器所有 SFTP cgroups + tc
不想折腾 换 vsftpd
企业环境 网络层限速

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

  • CentOS 版本(7 / 8 / Stream)
  • 是 限制单个用户 还是 所有 SFTP
  • 限速目标(如 1MB/s)

我可以直接给你一份可复制的配置。

0 踩