温馨提示×

ubuntu sftp如何限速

小樊
48
2026-09-23 13:57:33
栏目: 智能运维

在 Ubuntu 上限制 SFTP 传输速度,常见有几种做法,取决于你是限制服务器端、限制客户端,还是限制某一用户/目录。下面按场景说明。


一、服务器端限制(推荐:使用 OpenSSH + 系统机制)

方法 1:使用 pam_limit + tc(不常用,复杂)

不推荐,配置复杂。


方法 2:使用 systemd 限制 SFTP 服务(推荐)

如果你使用的是 OpenSSH 默认 SFTP(internal-sftp),可以通过 systemd 限制 sshd 相关资源。

1. 创建 systemd 覆盖配置

sudo systemctl edit ssh.service

写入:

[Service]
IOReadBandwidthMax=/var/sftp 1M
IOWriteBandwidthMax=/var/sftp 1M

限制 /var/sftp 目录读写速度为 1MB/s

重新加载:

sudo systemctl daemon-reload
sudo systemctl restart ssh

✅ 适合:限制所有 SFTP 用户访问某目录的速度


二、限制单个用户(OpenSSH + 限速脚本)

方法 3:使用 ForceCommand + trickle

1. 安装 trickle

sudo apt install trickle

2. 修改 /etc/ssh/sshd_config

Match User sftpuser
    ForceCommand trickle -u 100 -d 100 internal-sftp

说明:

  • -u 100:上传限速 100 KB/s
  • -d 100:下载限速 100 KB/s

重启 SSH:

sudo systemctl restart ssh

✅ 适合:限制某一个 SFTP 用户


三、客户端限速(临时、简单)

如果你是客户端,在 Ubuntu 上使用 sftp 命令:

sftp -l 100 user@host
  • -l 100:限速 100 Kbit/s(不是 KB)

或者用 rsync over SSH:

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

--bwlimit=1000 是 KB/s


四、使用专用 SFTP 服务器(更强控制)

如果你需要精细化限速(按用户、按IP、按时间):

  • ProFTPD + SFTP 模块
  • vsftpd(仅 FTP,非 SFTP)
  • CrushFTP / Syncthing(非标准 SFTP)

五、推荐方案总结

场景 推荐方式
限制某目录速度 systemd IO 限制
限制单个用户 trickle + ForceCommand
临时客户端限速 sftp -l / rsync
企业级 ProFTPD SFTP

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

  • 是 服务器限速 还是 客户端
  • 是否 多用户
  • SFTP 是 系统用户 还是 虚拟用户

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

0 踩