システム保守

optimize_centos7_ssh.sh

逆引き DNS、GSSAPI のネゴシエーション、IPv6 の到達性が原因で SSH 接続に時間がかかる、保守中の CentOS 7 ホスト向けです。sshd_config を日時付きでバックアップし、設定を変更して sshd -t で検証した後、sshd を再起動します。

ワンライナー

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

このコマンドは同梱ファイルをダウンロードするだけで、実行しません。保存したソースを確認し、バージョンを照合してから実行するか判断してください。

保存したファイルを照合

このページのビルドに同梱されたバイト列と照合します。ファイルはこのタブ内で処理し、この機能は送信・保存しません。上限は2 MiBです。

期待する SHA-256
83286133883b50a41d5a144397e9d4d380e14f8a0e3bf25be90348b92d678c53

同梱ファイルのバイト数: 1589

チェックサムファイルを保存

スクリプトとチェックサムを同じディレクトリに保存してください。GNU Coreutils のある Linux では次のコマンドでバイト列だけを検査できます。スクリプトは実行しません。コマンドには元のファイル名が必要です。

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 でスクリプトをダウンロードし、実行前に内容を確認します。
  2. 適用する場合は root または sudo で実行します。
  3. スクリプトが設定をバックアップ、編集、検証して sshd を再起動します。
  4. 既存の SSH 接続を保持したまま別の接続を試し、ログイン遅延が改善したか確認します。

注意事項

  • CentOS 7 はサポート終了済みです。これは延命・移行準備中の保守用途向けで、長期利用の推奨ではありません。
  • AddressFamily inet により IPv6 では sshd が接続を受け付けなくなります。IPv6 専用または IPv6 が必要な環境では適用しないでください。
  • Kerberos/GSSAPI が必要な環境では認証に影響します。変更前に依存関係を確認してください。
  • 構文検証に失敗するとスクリプトは終了しますが、自動復元はしません。バックアップからの復旧は手動です。
  • sshd は再起動されます。既存セッションを保持し、別の端末から新規 SSH 接続を確認するまで切断しないでください。

対応範囲と制限

  • CentOS 7 はサポート終了済みです。このスクリプトは保守・移行準備中の旧環境向けで、長期利用の推奨ではありません。
  • root、/etc/ssh/sshd_config、sshd -t、および systemctl または service が必要です。ユーザー引数、dry-run、自動ロールバックはありません。編集するのはこの設定ファイルだけで、Include 先の設定は調査しません。
  • AddressFamily inet により sshd は IPv4 のみで待ち受けます。GSSAPIAuthentication no は GSSAPI/Kerberos 認証を無効にします。どちらかが必要な環境では適用しないでください。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`)を確認し、現在の接続を保ったまま別接続で必要なアドレスファミリーを試します。

失敗した場合

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 接続の遅延です。詳しい調査の前に、これらの待ち時間が原因か切り分けましょう。

ページを見る