温馨提示×

centos ssh限速怎么设置

小樊
39
2026-09-11 15:30:00
栏目: 智能运维

在 CentOS 上给 SSH 限速,常见有几种做法,取决于你是想:

  1. 限制单个 SSH 连接的带宽(上下行速度)
  2. 限制 SSH 登录频率(防爆破)
  3. 限制某个 IP 的 SSH 访问速率

下面分别说明。


一、限制 SSH 连接带宽(最常用)

方法 1:使用 pam_limits(仅限制会话资源,不精准限速)

不推荐用于真正“限速”,但可以保证不占用过多资源。


方法 2:使用 tc(Traffic Control,系统级限速)✅推荐

示例:限制整台服务器的 SSH(22端口)带宽为 1Mbps

# 清空原有规则
tc qdisc del dev eth0 root

# 添加根队列
tc qdisc add dev eth0 root handle 1: htb default 10

# 创建类(1Mbps = 1024kbit)
tc class add dev eth0 parent 1: classid 1:10 htb rate 1024kbit ceil 1024kbit

# 使用 iptables 标记 SSH 流量
iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 10
iptables -t mangle -A INPUT -p tcp --dport 22 -j MARK --set-mark 10

# 将标记流量放入限速类
tc filter add dev eth0 parent 1: protocol ip handle 10 fw flowid 1:10

✅ 适合:

  • 限制 scp / sftp / ssh 总带宽
  • 防止把带宽打满

⚠ 注意:

  • eth0 改成你的网卡名(ip addr 查看)
  • 重启会失效,需写脚本

二、限制 SSH 登录频率(防暴力破解)

方法 1:使用 fail2ban(最推荐)

yum install epel-release -y
yum install fail2ban -y

systemctl enable fail2ban
systemctl start fail2ban

配置文件 /etc/fail2ban/jail.local

[sshd]
enabled = true
maxretry = 3
bantime = 3600
findtime = 600

✅ 效果:

  • 10 分钟内失败 3 次,封 IP 1 小时

方法 2:使用 iptables 限制连接速率

iptables -A INPUT -p tcp --dport 22 -m state --state NEW \
-m limit --limit 3/min --limit-burst 5 -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j DROP

✅ 效果:

  • 每分钟最多 3 个新 SSH 连接

三、限制某个 IP 的 SSH 速度

tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:10 htb rate 512kbit

iptables -t mangle -A INPUT -s 192.168.1.100 -j MARK --set-mark 10
tc filter add dev eth0 parent 1: protocol ip handle 10 fw flowid 1:10

四、SSH 本身是否支持限速?

SSH 服务端没有直接的“限速参数”

但客户端可以:

scp -l 800 file user@host:/path
  • -l 单位是 Kbit/s
  • 800 = 100KB/s

总结推荐

需求 推荐方案
限制 SSH 总带宽 tc + iptables
防止 SSH 爆破 fail2ban
限制连接频率 iptables limit
客户端限速 scp -l

如果你能说明:

  • CentOS 版本(6/7/8/Stream)
  • 网卡名
  • 想限制 上传 / 下载 / 登录频率

我可以给你一份可直接用的脚本

0