温馨提示×

ubuntu ssh如何限速

小樊
44
2026-10-06 23:33:54
栏目: 智能运维

在 Ubuntu 上给 SSH 限速,常见有几种场景和做法,下面按“最实用”到“进阶”给你说明。


一、限制 SSH 登录用户的带宽(最常用 ✅)

方法 1:使用 pam_limits + scp/rsync 限速(推荐)

如果你主要是 scp / rsync over ssh 限速,最简单:

scp 限速

scp -l 1000 file user@host:/path
  • -l 单位是 Kbit/s
  • 1000 = 1 Mbps

rsync 限速

rsync -avz --bwlimit=1m file user@host:/path
  • 1m = 1 MB/s

二、限制整个 SSH 服务的带宽(服务器侧 ✅)

方法 2:使用 tc(Linux 流量控制,最彻底)

适合 限制服务器 SSH 端口总带宽

# 限制 eth0 上 SSH(22端口) 为 1Mbps
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: prio 1 u32 \
  match ip dport 22 0xffff flowid 1:1

取消限制:

sudo tc qdisc del dev eth0 root

✅ 优点:真正限速
❌ 缺点:配置稍复杂


三、限制单个 SSH 用户(系统级)

方法 3:使用 limits.conf

只能限制 进程资源,不能直接限带宽,但可限制连接数。

sudo nano /etc/security/limits.conf

添加:

sshuser hard maxlogins 2

四、SSH 服务端限速(不原生支持 ❌)

OpenSSH 本身不支持带宽限制,所以:

  • 不能用 sshd_config 直接限速
  • 必须靠 外部工具(tc / trickle / 容器)

五、临时单进程限速(客户端)

方法 4:使用 trickle

sudo apt install trickle
trickle -u 100 -d 100 ssh user@host
  • -u upload KB/s
  • -d download KB/s

⚠ 只对部分程序有效


六、Docker / 容器限速(进阶)

如果是 SSH 在容器里:

docker run --network=limit_net ...

配合 tc 或 docker network 限速。


总结推荐 ✅

需求 推荐方式
scp/rsync 限速 -l / --bwlimit
服务器 SSH 总限速 tc
单用户连接限制 limits.conf
临时测试 trickle

如果你告诉我:

  • 是 服务器还是客户端
  • 想限 上传 / 下载 / 总带宽
  • 是否只限 scp 还是所有 SSH

我可以给你精确命令。

0 踩