云服务器 SSH 安全加固实战:从默认配置到密钥登录
新买一台云服务器,很多人第一件事是装 Nginx、装数据库,却把 SSH 就这么晾在默认配置上。默认 22 端口加密码登录,等于把大门钥匙挂在门把手上:全网的扫描器每天都在批量爆破,auth.log 里几千条失败记录就是证据。本文按真实操作顺序,把一台新机器的 SSH 加固到可上线的状态。
第一步:先建密钥,再动配置
加固最忌讳先禁密码、后配密钥,结果把自己锁在门外。顺序一定是:本地先生成密钥对,把公钥传上服务器、确认能免密登录之后,再去改服务端配置。本地执行 ssh-keygen 生成 ed25519 密钥,然后用 ssh-copy-id 把公钥写入服务器的 authorized_keys。随后新开一个终端窗口,用密钥登录一次,确认不用输密码能进,再继续往下走。旧窗口保持登录状态不动,这是你的逃生通道。
第二步:改 sshd 配置,禁密码、禁 root
编辑 /etc/ssh/sshd_config,改四个地方:把 Port 改成 1024 以上的高位端口,例如 22222;PasswordAuthentication 改成 no;PermitRootLogin 改成 no;PubkeyAuthentication 保持 yes。改完先 sshd -t 检查语法,再 systemctl reload sshd,不要 restart——reload 不会断掉当前连接,万一配错了还有旧窗口可以补救。随后在新窗口用新端口加密钥登录验证:ssh -p 22222 user@host,能进才算这一步完成。
第三步:防火墙只放行新端口
改端口只是换了门牌号,不关门等于没用。用 ufw allow 22222/tcp 放行新端口,再用 ufw delete allow OpenSSH 或 ufw delete allow 22/tcp 关掉旧端口,最后 ufw enable 生效。云厂商的安全组也要同步改:入方向只放行新端口,出方向保持默认。改完从外网扫一次端口确认 22 已关闭,这是很多人漏掉的一步——服务器本机防火墙关了,安全组还开着等于白改。
第四步:装 fail2ban 兜底
禁密码之后爆破已无从下手,但扫描流量仍会写满日志。装 fail2ban,默认的 sshd 规则就能在多次失败后封 IP 一段时间。配置很简单:装好后确认 jail 里 sshd 已启用,fail2ban-client status sshd 能看到封禁记录即可。它不是主防线,而是帮你把日志噪音降下来,顺带挡住针对密钥认证的骚扰连接。
第五步:日常习惯比配置更重要
密钥文件只放本地且设 600 权限,不要传到代码仓库、不要发到群里;一台机器一个密钥对,换电脑就轮换;定期看一次 auth.log 和 fail2ban 状态,确认没有异常登录。很多人加固完就再也不看日志,等发现异常时早已过了最佳处置时间。每月花五分钟看一眼,比任何工具都管用。
总结一下顺序:密钥先行、配置跟上、防火墙收口、fail2ban 兜底、日志定期看。这套流程在一台新机器上二十分钟就能做完,之后不管装什么应用,入口都是干净的。安全加固没有一劳永逸,但把默认配置改掉这一步,就已经挡住了九成以上的自动化攻击。
- 点赞
- 收藏
- 关注作者
评论(0)