在 CentOS 上,SFTP 本身(OpenSSH 自带的 sftp-server)默认不支持直接限速,但可以通过 几种间接方式实现限速。下面按常用程度说明。
OpenSSH 的 sftp-server 没有内置限速参数(如 -l 限速)。
所以:
❌ 不能像 scp -l 那样直接限速
✅ 只能通过外部手段
trickle 限制 SFTP 速度(最简单)trickle 是一个用户态流量限速工具,可以限制任意程序的网络速率。
yum install epel-release -y
yum install trickle -y
编辑:
vi /etc/ssh/sshd_config
找到或添加:
Subsystem sftp /usr/sbin/sftp-server
改成:
Subsystem sftp /usr/bin/trickle -s -u 100 -d 100 /usr/sbin/sftp-server
参数说明:
-u 100:上传限速 100 KB/s-d 100:下载限速 100 KB/s重启 SSH:
systemctl restart sshd
✅ 优点:简单
❌ 缺点:多用户共享限制,不够精细
tc + iptables(服务器级限速,更专业)适合:
tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
或更复杂用 htb 分类限速。
⚠️ 需要网络知识,且影响所有 SSH 流量(不止 SFTP)
proftpd / vsftpd(替代 SFTP)如果你不是必须用 SSH SFTP,可以:
anon_max_rate=100000
local_max_rate=100000
✅ 原生限速
❌ 不是 SFTP(协议不同)
| 场景 | 推荐方案 |
|---|---|
| 临时 / 简单 | trickle |
| 多用户 / 稳定 | tc |
| 不想用 SFTP | vsftpd |
如果你愿意,我可以:
直接说你的使用场景即可。