安全加固

centos_disable_password_ssh.sh

适用于需要从密码登录切换到仅密钥登录的 CentOS 或类似 OpenSSH 主机。脚本会先确认目标用户存在可用的 authorized_keys,再以幂等方式修改 sshd_config,并在重载服务前执行语法校验,避免把服务器直接锁死。

一键命令

curl -fsSL helper.sh/centos_disable_password_ssh.sh | sudo bash
curl -fsSL -o centos_disable_password_ssh.sh helper.sh/centos_disable_password_ssh.sh && sudo bash centos_disable_password_ssh.sh

运行要求

  • CentOS 或类似 OpenSSH 主机
  • 需要 root 权限或 sudo
  • 目标用户已存在非空 authorized_keys 文件
  • 系统中存在 /etc/ssh/sshd_config

适用场景

  • 在密钥登录准备完成后关闭 SSH 密码登录
  • 在 CentOS 运维任务中标准化仅密钥登录加固流程
  • 减少暴露在公网的 SSH 主机遭遇密码爆破的攻击面

脚本亮点

  • 如果目标用户还没有 authorized_keys,会直接终止,避免误锁服务器
  • 以幂等方式修改 sshd_config,而不是无脑追加配置
  • 如果 sshd -t 校验失败,会自动恢复原始配置

推荐流程

  1. 先确认目标用户已经安装好 SSH 公钥。
  2. 从 helper.sh 拉取脚本,并用 sudo 或 root 执行。
  3. 让脚本自动修改 sshd_config、校验语法并重载 sshd。
  4. 关闭当前会话前,先新开一个 SSH 连接确认密钥登录仍然正常。

安全提示

  • 在另一终端确认密钥登录可用之前,不要直接运行这个脚本。
  • 如果公钥属于非 root 用户,请通过 TARGET_USER=<用户名> 指定目标账户。
  • 脚本会保留 UsePAM yes,避免引入不必要的会话处理问题。

相关文章

CentOS 上如何关闭 SSH 密码登录,同时避免把自己锁在门外

一篇面向实操的说明,讲清楚什么时候该用 centos_disable_password_ssh.sh 关闭密码登录、它会改哪些 SSH 配置,以及怎样避免把服务器直接锁死。

相关专题

CentOS 7 运维恢复

面向仍在运行 CentOS 7 的遗留主机,集中处理 yum 源失效、镜像仓库 404、Docker 数据迁移等运维恢复场景。

查看专题

问题页面

为什么在 CentOS 上关闭 SSH 密码登录后就连不上了

最常见的原因是先关闭了 PasswordAuthentication,却没有先确认目标账号已经存在可用的 authorized_keys,并且没有先做一次成功的密钥登录验证。

打开页面