温馨提示×

ubuntu sftp能限速吗

小樊
39
2026-10-22 20:25:55
栏目: 智能运维

在 Ubuntu 上,SFTP 本身(OpenSSH 自带的 sftp-server)是“不直接支持限速”的,但可以通过以下几种方式实现限速。


一、OpenSSH 原生方式(不推荐,限制大)

OpenSSH 的 sftp-server 没有内置 speed limit 参数。
所以单纯用系统自带 SFTP 无法像 scp -l 那样限速。

❌ sftp 命令没有 -l 限速参数
❌ sshd_config 中没有 SFTP 限速项


二、推荐方案 1:用 trickle 限制 SFTP 客户端速度(最简单)

trickle 可以限制任意程序的网络带宽。

安装

sudo apt update
sudo apt install trickle

使用(客户端)

trickle -s -d 100 -u 50 sftp user@host
  • -d 100:下载限速 100 KB/s
  • -u 50:上传限速 50 KB/s

✅ 适合:你控制客户端机器


三、推荐方案 2:服务器端用 iptables + tc 限速(最通用)

适合 限制某个用户 / IP 的 SFTP 速度

示例:限制某 IP 的 SFTP(22端口)

sudo tc qdisc add dev eth0 root handle 1: htb
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
  match ip src 192.168.1.100 flowid 1:1

✅ 适合:服务器管理员
❌ 配置复杂


四、推荐方案 3:用 proftpd / vsftpd(非 SFTP,但支持限速)

如果你不一定非要用 SFTP(可以用 FTP/FTPS):

vsftpd 限速

# /etc/vsftpd.conf
local_max_rate=100000
  • 单位:bytes/s
  • 100000 = 100KB/s

✅ 配置简单
❌ 不是 SFTP(是 FTP)


五、推荐方案 4:用 rsync 代替 SFTP(带限速)

如果是传文件,不只是交互:

rsync -av --bwlimit=100 user@host:/path /local
  • --bwlimit=100 = 100 KB/s

✅ 最稳定
✅ 实际生产常用


六、总结对比

方案 是否 SFTP 难度 建议
trickle ✅ ⭐ 客户端限速首选
iptables+tc ✅ ⭐⭐⭐ 服务器强制限速
vsftpd ❌ ⭐ 不强制 SFTP
rsync ✅(SSH) ⭐ 文件同步首选

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

  • 是 服务器限速 还是 客户端限速
  • 是 单用户 还是 所有 SFTP
  • Ubuntu 版本

我可以给你可直接用的完整配置。

0 踩