SSH 免密登录与服务器安全加固实战
服务器刚开通时,很多人习惯用密码登录 SSH。时间一长,不仅每次输入麻烦,更重要的是密码一旦泄露或被暴力破解,整台机器的数据都岌岌可危。本文分享一套实用的组合拳:先配置 SSH 密钥免密登录,再做几项关键的安全加固,让服务器既好用又安全。
一、生成密钥对
在本地电脑上执行:
ssh-keygen -t ed25519 -C "your_email@example.com"
一路回车即可,会在 ~/.ssh/ 目录下生成 id_ed25519(私钥)和 id_ed25519.pub(公钥)。私钥相当于你家的钥匙,绝不能外传;公钥则可以放心放到服务器上。
二、把公钥部署到服务器
最省事的办法是:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@服务器IP
这条命令会自动把公钥追加到服务器 ~/.ssh/authorized_keys 文件中,并设置好权限。之后再执行 ssh user@服务器IP,就能直接登录,无需输入密码了。
三、禁用密码登录,堵住暴力破解
编辑服务器上的 /etc/ssh/sshd_config,找到并修改以下几项:
PasswordAuthentication no
PermitRootLogin prohibit-password
PubkeyAuthentication yes
修改后重启 sshd 服务:
sudo systemctl restart sshd
这样一来,攻击者即使知道你的用户名,没有私钥也寸步难行。注意:修改之前务必确认密钥登录已经可用,否则可能把自己锁在门外。
四、更换默认端口,缩小攻击面
把默认的 22 端口改成一个不常用的高位端口,例如 22222:
Port 22222
同时建议配合防火墙只放行必要的 IP 段。端口扫描器最爱扫 22 端口,换个端口能挡掉绝大多数自动化攻击脚本。
五、开启 fail2ban 自动封禁
安装 fail2ban,多次输错密码或异常登录的 IP 会被自动拉黑一段时间:
sudo apt install fail2ban
sudo systemctl enable --now fail2ban
它是服务器的“看门狗”,对付暴力破解非常有效。
六、定期检查与备份
- 定期查看
/var/log/auth.log,留意异常登录记录; - 私钥做好异地备份,更换电脑时及时在服务器上删除旧公钥;
- 重要数据定期做快照备份,有备无患。
小结
密钥登录解决的是“身份可信”问题,禁用密码、更换端口、fail2ban 解决的是“减少攻击面”问题。两者结合,再配合良好的备份习惯,一台云服务器的安全水位就足以应对绝大多数日常威胁。安全没有银弹,但每一步加固都在提高攻击者的成本。
- 点赞
- 收藏
- 关注作者
评论(0)