## 适用场景
公网服务器的 SSH 默认 22 端口,是全球扫描器的第一站:日志里成千上万条失败登录,全是自动化爆破在试密码。两条低成本的配置能挡掉绝大多数噪音:把端口改成非标准端口,扫描器扫不到入口;禁用 root 直接登录与密码登录,只留密钥通道,爆破彻底失去意义。改动半小时,换来日志清净与被攻破概率的大幅下降,是投入产出比最高的加固动作。这两步是组合拳,先做哪个都行,都做完才算收工。
## 改端口的正确顺序
顺序错一步就可能把自己锁外面。第一步,编辑 sshd_config 的 Port 行,保留 22 并新增端口,两行并存:
Port 22 Port 2222
第二步,放行新端口:顺云控制台的防火墙规则与系统内 firewalld 都要放行 2222,任何一层漏放都连不上。第三步,重启 sshd,新开会话用 2222 登录验证成功。第四步,确认无误后删掉 Port 22 那行,再重启 sshd,收尾。全程保留一个已登录会话不动,随时能改回来。
## 禁 root 与密码登录
前提是密钥登录已配好且稳定。sshd_config 两行:
PermitRootLogin no PasswordAuthentication no
含义:root 不允许直接 SSH 登录(需要 root 时用普通用户加 sudo 提权);所有用户禁止密码认证,只接受密钥。改完同样先验证再依赖:新开会话确认密钥登录正常、密码方式被拒绝,才算生效。禁密码前务必确认有 sudo 权限的普通账号与它的密钥都正常,否则等于自锁。sudoers 里给运维账号按需精确授权,而不是无差别放开全部命令,这是权限卫生的延伸。
## 验证与注意
验证手段:从外部尝试密码登录应被拒;用 22 端口连接应无响应。别忘了清场:fail2ban 若在跑,监控端口配置同步更新;定时任务里用旧端口的脚本全部改掉。改端口属于模糊防护,真正的主力是密钥与禁密码,两者都做才是完整方案。顺云的云服务器做好这两步后,auth 日志里的爆破噪音会安静下来,告警阈值也可以设得更灵敏,真正的异常反而更容易被看见。团队多人共用服务器时,公钥各自独立管理,人员变动时逐行回收,不影响他人登录。