系統維護

optimize_centos7_ssh.sh

適用於 SSH 登入明顯變慢的 CentOS 7 舊主機,常見根因是 sshd 等待反向 DNS、GSSAPI 協商或 IPv6 回退。腳本會先備份 sshd_config,再寫入建議設定、檢查語法,然後重啟 sshd。

一鍵命令

curl -fL 'https://www.helper.sh/optimize_centos7_ssh.sh' -o './optimize_centos7_ssh.sh'

此命令只會下載本站檔案,不會執行。請先檢查儲存的原始碼並核對版本,再決定是否執行。

核對已下載檔案

與本頁面建置時內建的確切位元組比較。檔案僅在目前分頁處理,此工具不上傳、不持久儲存檔案。上限2 MiB。

預期 SHA-256
83286133883b50a41d5a144397e9d4d380e14f8a0e3bf25be90348b92d678c53

內建檔案位元組數: 1589

儲存校驗檔案

將腳本與校驗檔案儲存在同一目錄。Linux 安裝 GNU Coreutils 後可用下方命令僅檢查位元組,不執行腳本;使用此命令時需保留原檔名。

sha256sum --check './optimize_centos7_ssh.sh.sha256'

尚未比較。

校驗值與腳本來自同一網站,不是獨立簽章。一致不證明安全、上游相依項目真實可信或適合本機;可變遠端相依項目需單獨審閱。

查看驗證與限制

執行要求

  • CentOS 7 或類似 OpenSSH 主機
  • 需要 root 權限或 sudo
  • 存在 /etc/ssh/sshd_config
  • 可用 systemctl 或 service

適用場景

  • 縮短由反向 DNS 解析導致的 SSH 登入等待時間
  • 在不用 Kerberos 的主機上關閉 GSSAPI 驗證
  • 把 CentOS 7 維護中的 SSH 加速步驟標準化

腳本亮點

  • 修改前自動建立帶時間戳的 sshd_config 備份
  • 冪等寫入 UseDNS no、GSSAPIAuthentication no 和 AddressFamily inet
  • 重啟前先執行 sshd -t,避免錯誤設定直接生效

推薦流程

  1. 用 curl 從 helper.sh 下載腳本。
  2. 以 root 或 sudo 方式執行。
  3. 讓腳本自動完成備份、修改、檢查和重啟 sshd。
  4. 重新 SSH 連線,確認延遲是否消失。

安全提示

  • 如果是生產關鍵主機,建議先審閱原始腳本再執行。
  • 如果伺服器依賴 Kerberos 或純 IPv6 連通,不要直接套用這些預設值。
  • 測試重啟時保留一個現有 SSH 工作階段,避免把自己鎖在門外。

相容範圍與限制

  • CentOS 7 已結束支援;此腳本僅適合舊環境維護或移轉準備,不是長期平台建議。
  • 需要 root、/etc/ssh/sshd_config、sshd -t,以及 systemctl 或 service。沒有使用者參數、dry-run 或自動回復。腳本只編輯這一個檔案,不檢查 Include 的設定檔。
  • AddressFamily inet 會讓 sshd 只監聽 IPv4。GSSAPIAuthentication no 會停用 GSSAPI/Kerberos SSH 驗證;若用戶端或政策依賴它們,請勿套用。UseDNS no 會停用反向查詢;OpenSSH 文件指出,此設定下 authorized_keys 的 from 與 sshd_config 的 Match Host 不能使用主機名稱。

受影響的檔案、服務與資料

  • /etc/ssh/sshd_config:編輯前建立含時間戳的副本,接著新增或取代 UseDNS、GSSAPIAuthentication、AddressFamily 指令。
  • `sshd -t` 成功後重新啟動 sshd 服務。不修改連接埠或應用程式資料。

唯讀核驗

  • 執行前以 `sudo sshd -T | grep -E '^(usedns|gssapiauthentication|addressfamily) '` 檢查目前生效值。
  • 安排維護時段後才執行;之後檢查 `sudo sshd -t`、`sudo systemctl status sshd`(或 `sudo service sshd status`),保留目前 SSH 工作階段,並從另一個終端依所需位址系列測試新連線。

失敗後的下一步

若 sshd -t 失敗,腳本會結束但保留已編輯檔案。請保持目前工作階段,檢查錯誤行;必要時手動從含時間戳的備份還原。若服務重新啟動失敗,查看 `sudo journalctl -u sshd -n 100 --no-pager`,不要關閉仍可用的工作階段。

參考文件

CentOS 7 手冊存檔來自鏡像站。OpenBSD 現行手冊僅供上游參考,不保證與 CentOS 7 隨附版本完全一致。

先下載、審閱並核對版本,再決定是否執行。雜湊只能識別這一版位元組,不能證明安全。pipe 命令會立即執行遠端內容;上游依賴也可能變動。

相關專題

CentOS 7:選擇復原工作

變更已結束支援的主機前,先區分軟體庫故障、SSH 存取問題與 Docker 儲存壓力。

查看專題

問題頁面

為什麼 CentOS 7 的 SSH 登入很慢

最常見的根因是反向 DNS 解析、GSSAPI 驗證協商,以及部分舊環境裡的 IPv6 回退。先把這些等待關掉,再做更深的 SSH 排查。

打開頁面