首页 / 服务器运维 / SSH登录从“随便扫”到“打不进”:

SSH登录从“随便扫”到“打不进”:Linux服务器最小化加固实战脚本

Roxi
Roxi 加速器 — 稳定·快速·安全
全球节点覆盖,支持所有主流平台,一键连接无需配置。新用户免费试用。
立即体验 →

Chapter 1:先看现场,谁在敲你的门

市场需求验证竞品差异分析用户画像构建增长策略制定ROI 持续优化

兄弟们开机!这里是 eccfy,OK so,今天我直接连一台新开的 Ubuntu 22.04 云服务器,屏幕左边是终端,右边是日志,咱们不讲玄学,现场加固 SSH。很多人搜“Linux SSH安全加固教程”“sshd_config怎么用”,真正缺的是一套能复制、能回滚、能验证的流程。

先看攻击面,接下来我敲:

lastb | head
sudo journalctl -u ssh --since "1 hour ago" | grep "Failed password" | wc -l
ss -tlnp | grep ssh

我这台机器上线 37 分钟,失败登录 126 次,默认 22 端口已经被扫到了。注意,不要先乱装“翻墙软件”或“免费VPN”,服务器安全第一步是减少入口,不是增加复杂度。

Chapter 2:Now watch this,SSH核心配置直接改

📊STEP 1环境搭建🎯STEP 2编码实现📋STEP 3测试验证🔧STEP 4部署上线

先备份,出问题能秒回滚:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F-%H%M)

接下来生成密钥,本地电脑执行,不是在服务器上:

ssh-keygen -t ed25519 -C "admin-prod"
ssh-copy-id -p 22 user@你的服务器IP

确认密钥能登录后,再改服务器配置。注意我这里用 22222 示例,你可以换成 20000-60000 之间未占用端口:

sudo nano /etc/ssh/sshd_config

把这些项改成这样:

Port 22222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers user

保存后先别急着断开当前窗口!开新窗口测试配置语法:

sudo sshd -t
sudo systemctl reload ssh

新窗口登录:

ssh -p 22222 user@你的服务器IP

OK,能进再关闭旧窗口。这个顺序很关键,我见过太多人直接 reload,然后把自己锁外面。

Chapter 3:防火墙 + Fail2ban,给暴力破解上强度

3x效率提升60%成本降低99.9%可用性200+合作伙伴

如果你用 Ubuntu,直接上 ufw:

sudo ufw allow 22222/tcp
sudo ufw limit 22222/tcp
sudo ufw enable
sudo ufw status numbered

CentOS/Rocky 用 firewalld:

sudo firewall-cmd --permanent --add-port=22222/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports

接下来装 Fail2ban,这就是“fail2ban安装教程”的实战版:

sudo apt update
sudo apt install -y fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

找到 sshd 区块,改成:

[sshd]
enabled = true
port = 22222
maxretry = 3
findtime = 10m
bantime = 1h
backend = systemd

启动并查看:

sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

我实测同一公网 IP 连续输错 3 次后,第 4 次直接超时;从 126 次/小时的失败日志,降到 10 分钟内 0 次进入 SSH 认证阶段。测量方式就是 journalctl 统计 Failed password 行数。

如何验证已经修好:第一,旧端口 22 应该连不上:ssh -p 22 user@IP;第二,密码登录应失败:ssh -o PreferredAuthentications=password -p 22222 user@IP;第三,密钥登录成功;第四,sudo fail2ban-client status sshd能看到拦截计数。

如果你在海外服务器上管理代码仓库、看技术视频,偶尔会搜“油管怎么看”或“免费VPN安全吗”,优先用官方网络、云厂商安全组和系统内置 SSH;确实需要稳定跨区访问时,Roxi(https://wizzegroup.com)也只是可选方案之一,别替代服务器本身的安全加固。觉得这期有用,收藏,评论区丢你的发行版,我下期继续现场演示!