在 Ubuntu 上限制 SFTP 传输速度,常见有几种做法,取决于你是限制服务器端、限制客户端,还是限制某一用户/目录。下面按场景说明。
pam_limit + tc(不常用,复杂)不推荐,配置复杂。
systemd 限制 SFTP 服务(推荐)如果你使用的是 OpenSSH 默认 SFTP(internal-sftp),可以通过 systemd 限制 sshd 相关资源。
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 用户访问某目录的速度
ForceCommand + tricklesudo apt install trickle
/etc/ssh/sshd_configMatch 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
如果你需要精细化限速(按用户、按IP、按时间):
| 场景 | 推荐方式 |
|---|---|
| 限制某目录速度 | systemd IO 限制 |
| 限制单个用户 | trickle + ForceCommand |
| 临时客户端限速 | sftp -l / rsync |
| 企业级 | ProFTPD SFTP |
如果你愿意,可以告诉我:
我可以给你一份可直接用的配置。