安全加固

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,並且沒有先做一次成功的金鑰登入驗證。

打開頁面