在 Ubuntu 上给 SSH 限速,常见有几种场景和做法,下面按“最实用”到“进阶”给你说明。
pam_limits + scp/rsync 限速(推荐)如果你主要是 scp / rsync over ssh 限速,最简单:
scp -l 1000 file user@host:/path
-l 单位是 Kbit/srsync -avz --bwlimit=1m file user@host:/path
1m = 1 MB/stc(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
✅ 优点:真正限速
❌ 缺点:配置稍复杂
limits.conf只能限制 进程资源,不能直接限带宽,但可限制连接数。
sudo nano /etc/security/limits.conf
添加:
sshuser hard maxlogins 2
OpenSSH 本身不支持带宽限制,所以:
sshd_config 直接限速tricklesudo apt install trickle
trickle -u 100 -d 100 ssh user@host
-u upload KB/s-d download KB/s⚠ 只对部分程序有效
如果是 SSH 在容器里:
docker run --network=limit_net ...
配合 tc 或 docker network 限速。
| 需求 | 推荐方式 |
|---|---|
| scp/rsync 限速 | -l / --bwlimit |
| 服务器 SSH 总限速 | tc |
| 单用户连接限制 | limits.conf |
| 临时测试 | trickle |
如果你告诉我:
我可以给你精确命令。