手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 SSH サーバー設定 – sshd_config と公開鍵認証の前提を確認する

Ubuntu 22.04 の SSH サーバー設定では、openssh-server の状態確認、sshd_config.d による設定追加、sshd -t による構文確認、別セッションでのログイン確認を順番に行います。SSH は管理経路そのものなので、設定内容だけでなく、失敗したときに戻れる作業順序が重要です。

この記事は、Ubuntu 22.04 の既存環境で SSH 設定を読み直すための記事です。新規構築では Ubuntu 26.04 側の記事を優先しつつ、22.04 環境の設定確認や古い構築記録の読み替えに使ってください。

関連する記事
この記事で確認すること
  • OpenSSH server のインストールとサービス確認
  • sshd_configsshd_config.d の関係
  • root ログインとパスワード認証の扱い
  • sshd -t と reload の順番
  • 別セッションでログイン確認してから作業を終える流れ
参考
書籍
参考書籍

Advanced Ubuntu Administration and Management Best Practices

Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

SSH 設定を変更するときは、既存の SSH セッションを閉じずに作業します。設定を反映した後、別ターミナルから新しくログインできることを確認してから、古いセッションを閉じます。

設定変更の流れ

  • OpenSSH server をインストールまたは状態確認する
  • 既存の SSH 接続を残したまま設定を変更する
  • sshd_config.d に設定ファイルを追加する
  • sshd -t で構文確認する
  • systemctl reload ssh で反映する
  • 別セッションでログイン確認してから古いセッションを閉じる

OpenSSH server を確認する

Ubuntu Server のインストール時に SSH server を有効化している場合、追加インストールは不要です。入っていない場合は openssh-server をインストールします。

コマンド
sudo apt update
sudo apt install -y openssh-server
systemctl status ssh --no-pager
ss -ltnp | grep ':22'

Ubuntu 22.04 では、サービス名として ssh を使います。設定ファイル名の sshd とサービス名の ssh を混同しないようにします。

sshd_config.d を使う

Ubuntu 22.04 の /etc/ssh/sshd_config には、追加設定を読み込む Include 行があります。

設定例
Include /etc/ssh/sshd_config.d/*.conf

既存の /etc/ssh/sshd_config を大きく書き換えるより、/etc/ssh/sshd_config.d/ に管理用の設定ファイルを追加する方が変更点を追いやすくなります。

基本設定を追加する

例として、root ログインを禁止し、パスワード認証を無効化する設定を追加します。公開鍵認証の準備が済んでいない環境で PasswordAuthentication no にするとログインできなくなるため、必ず別セッションで確認しながら進めます。

コマンド
sudo tee /etc/ssh/sshd_config.d/90-local-hardening.conf >/dev/null <<'EOF'
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
EOF
設定意味
PermitRootLogin noroot ユーザーでの SSH ログインを禁止する
PasswordAuthentication noパスワード認証を禁止する
KbdInteractiveAuthentication noキーボード対話型認証を禁止する
PubkeyAuthentication yes公開鍵認証を有効にする

設定を検証して反映する

設定を反映する前に、sshd -t で構文確認を行います。ここでエラーが出る場合は reload しません。

コマンド
sudo sshd -t
sudo systemctl reload ssh
systemctl status ssh --no-pager

SSH 設定の反映では、既存セッションへの影響を抑えるために restart より reload を優先します。ただし、設定ミスがあれば新規ログインに失敗するため、次のログイン確認までを一連の作業として扱います。

別セッションでログイン確認する

設定反映後、現在のセッションを閉じずに、別のターミナルから SSH 接続を確認します。

コマンド
ssh user@server.example.com

公開鍵認証でログインできることを確認してから、古いセッションを閉じます。ログインできない場合は、まだ開いている既存セッションから設定を戻せます。

ファイアウォールを確認する

UFW を使っている場合は、SSH の通信が許可されているか確認します。

コマンド
sudo ufw status verbose
sudo ufw allow from 192.0.2.0/24 to any port 22 proto tcp

SSH を許可する場合は、環境に応じて許可範囲を決めます。インターネット全体に開けるより、管理元ネットワークを制限する方が安全です。

運用上の注意

  • SSH 設定変更時は既存セッションを残す
  • sshd -t で構文確認してから reload する
  • 公開鍵認証が確認できるまでパスワード認証を無効化しない
  • 管理元ネットワークを制限できる場合はファイアウォールでも制限する
  • 設定ファイルは sshd_config.d に分け、変更理由を追いやすくする

まとめ

Ubuntu 22.04 の SSH サーバー設定では、openssh-server の状態確認、sshd_config.d による設定追加、sshd -t による構文確認、systemctl reload ssh による反映を順番に行います。

SSH は管理経路そのものなので、設定の正しさだけでなく、失敗した時に戻れる作業順序が重要です。公開鍵認証の準備、ログイン確認、ファイアウォールの許可範囲を分けて確認します。

関連する記事
Ubuntu 22.04 SSH サーバー設定 – sshd_config と公開鍵認証の前提を確認する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る