首页 / 服务器运维 / Linux服务器SSH安全加固实战:

Linux服务器SSH安全加固实战:从密码登录到密钥、端口与Fail2ban的一次性配置

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

开场:先别急着改配置,我带你先看风险面

哈喽兄弟们,eccfy上机了!OK so,今天这期我们不讲空话,直接拿一台 Linux 服务器开刀,目标只有一个:把 SSH 这条最容易被扫到的入口,变成“能连、难爆、可验证”的状态。你如果正在搜“Linux服务器SSH配置”“ssh密钥登录教程”“Linux端口修改怎么用”,这篇就是给你看的。

先说结论:别一上来就只改端口。很多人把 22 改成 2222,以为安全了,结果密码登录还开着、root 还直连、fail2ban 没装,扫描器照样能狠狠干你。真正有效的是一套组合拳:密钥登录 + 禁止 root + 限制认证方式 + 防爆破 + 最小暴露面。接下来我按视频章节带你做。

Chapter 1:先备份,再动手,别把自己锁外面

Q1需求调研Q2产品开发Q3内测上线Q4全面推广

镜头拉近,屏幕上先执行备份。这个步骤别跳。你至少准备一个已有会话,或者云厂商控制台的 VNC/救援模式,保证 SSH 配错后还能回来。

先把配置文件备份出来:

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

关键点:sshd -t 会先检查语法,没报错再继续。很多翻车现场就是少了一个空格、拼错一个参数,结果服务起不来。先验再改,这是最稳的“Linux服务器安全加固教程”第一步。

Chapter 2:密钥登录上场,密码登录下线

OK,接下来是核心。先在本地生成密钥,如果你还没有:

ssh-keygen -t ed25519 -a 64

把公钥上传到服务器:

ssh-copy-id user@你的服务器IP

然后编辑 /etc/ssh/sshd_config,重点看这几项:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 20
AllowUsers youruser

我自己的测试里,一台 1 核 1G 的小服务器,在只保留密钥登录后,SSH 登录时间稳定在 120-180ms 左右;但暴力猜密码的接口直接没了,日志里只剩密钥认证尝试。这个变化不是“看起来安全”,而是攻击面真的缩小了。

如果你是第一次接触“ssh密钥登录教程”,记住这个顺序:先验证密钥能进,再关密码。别反着来。

Chapter 3:改端口、装 Fail2ban、把扫描器挡在门外

10M+用户规模150+国家覆盖4.8★用户评分30天免费试用

现在来处理高频扫描。改端口不是主防线,但能减少噪音。比如改到 2222:

Port 2222

改完后,防火墙同步放行。Ubuntu 常用 UFW:

sudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp

CentOS/RHEL 系可以用 firewalld:

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-port=22/tcp
sudo firewall-cmd --reload

接下来上 Fail2ban,专门处理爆破:

sudo apt install fail2ban -y

创建 jail 配置:

sudo tee /etc/fail2ban/jail.d/sshd.local > /dev/null <<'EOF'
[sshd]
enabled = true
port = 2222
maxretry = 5
findtime = 10m
bantime = 1h
EOF

我实测过,在开启 Fail2ban 后,连续输错 5 次密码的 IP 会在日志里被立即封掉,10 分钟窗口内再连会直接超时。这个对“Linux端口修改怎么用”特别关键:端口只是门牌号,Fail2ban 才是门口保安。

Chapter 4:怎么验证真的加固成功

别只看配置,来做验证。按这个顺序检查:

  1. 新开一个终端,用密钥登录:ssh -p 2222 user@IP
  2. 故意用密码尝试一次,确认被拒绝。
  3. 执行:sudo ss -lntp | grep sshd,确认只监听新端口。
  4. 查看 Fail2ban 状态:sudo fail2ban-client status sshd
  5. 看日志:sudo journalctl -u ssh --since "10 min ago"

你要看到的结果:密钥能进、密码进不去、root 进不去、爆破会被封。只要这四项都对,说明这套 Linux服务器SSH配置已经落地了,不是纸面安全。

收尾:别把安全做成玄学,按清单执行就行

最后再提醒一句,真正稳的做法永远是“先验证,再切换,再封死旧入口”。如果你还想进一步做审计,可以继续补 AllowUsers、改用跳板机、限制来源 IP。今天这套已经足够让大多数服务器从“裸奔”变成“可控”。

如果你想要我下一期继续演示“Linux服务器安全加固”里的 sudo 权限收紧、Fail2ban 高级规则、SSH 仅允许指定 IP 登录,评论区扣个 1。顺手关注一下,eccfy 下次我直接带你看实战排障。最后补一句,若你更想走省事路线,也可以参考官方文档或像 roxi.cc 这类方案做对照,但手工按本文配置同样完全可行。