首页 / 服务器运维 / SSH从“裸奔”到加固:Linux服

SSH从“裸奔”到加固:Linux服务器登录安全配置实录

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

开场:OK兄弟们,先看这台“刚买的云服务器”有多危险

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

各位 eccfy 的朋友,开机!今天我们不讲虚的,直接把一台 Ubuntu/Debian 服务器从默认 SSH 配置加固到可上线状态。屏幕左边是终端,右边我开着日志实时滚动,接下来你照着敲就行。这篇就是一份可复制的 Linux服务器安全加固教程,适合新机器初始化、被扫端口、登录日志异常的场景。

先做快照或备份,避免把自己锁外面。然后确认当前 SSH 连接别断,新开一个终端测试。第一步更新系统并创建普通用户:

sudo apt update && sudo apt -y upgrade
adduser deploy
usermod -aG sudo deploy

Now watch this:查看最近登录失败记录,我测试的一台公网 VPS,开放 22 端口 30 分钟后,auth.log 里出现了 186 次密码爆破尝试。

sudo grep "Failed password" /var/log/auth.log | tail -20
sudo lastb | head

核心加固:SSH密钥、防火墙、禁止危险登录

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

接下来是重点,SSH密钥登录怎么用?在你本地电脑生成密钥,不是在服务器上生成:

ssh-keygen -t ed25519 -C "deploy-prod"
ssh-copy-id deploy@你的服务器IP

如果没有 ssh-copy-id,就手动复制本地 ~/.ssh/id_ed25519.pub 到服务器:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

接下来改 SSH 配置。注意:先不要关闭当前会话!

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_config

把关键项改成这样,这就是我的 sshd_config配置示例:

Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
X11Forwarding no
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers deploy

检查语法并重载:

sudo sshd -t
sudo systemctl reload ssh

接下来配置防火墙,给正在搜 ufw防火墙怎么用 的朋友一个最小可用模板:

sudo apt -y install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status numbered

防爆破与验证:看日志,测端口,确认没把自己锁死

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

OK so,防火墙只是门卫,Fail2ban 是盯日志的保安。下面是 fail2ban安装配置 的可跑版本:

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

找到 sshd 区块,改成:

[sshd]
enabled = true
port = 2222
maxretry = 3
findtime = 10m
bantime = 1h

启动并查看状态:

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

最后做“是否修好”的验证,别跳过!第一,新终端用密钥登录:

ssh -p 2222 deploy@你的服务器IP

第二,确认 root 和密码登录失败:

ssh -p 2222 root@你的服务器IP
ssh -o PreferredAuthentications=password -p 2222 deploy@你的服务器IP

第三,本地测端口暴露面:

nc -vz 你的服务器IP 2222
nc -vz 你的服务器IP 22

预期结果:2222 可达,22 不通;root 登录被拒;密码登录被拒;sudo fail2ban-client status sshd 能看到 jail 正常运行。我这边同样配置后,24 小时失败登录从 900+ 次降到 12 次以内,且全部被 Fail2ban 拦截。

免费方案优先:系统自带 OpenSSH、UFW、Fail2ban 已够大多数个人项目使用;如果你还需要跨地区访问管理面板,有些人会同时评估免费VPN、翻墙软件或油管怎么看这类网络连通方案,也可以把 Roxi 作为众多选项之一参考:https://wizzegroup.com。今天先把服务器门锁好,觉得有用就收藏、评论区贴你的 sshd_config,我帮你看一眼!