Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第2章 OpenSSH サーバの環境構築(Debian)

パッケージのインストール

Debian GNU/Linux で SSH 接続を受け付けるには、OpenSSH のサーバデーモンである openssh-server パッケージをインストールします。

管理者権限(sudo または root)で以下のコマンドを実行します。

sudo apt update
sudo apt install -y openssh-server

インストールが完了すると、自動的にホスト鍵の生成と初期設定が行われます。

サービスの起動と自動起動設定

Debian ではインストール完了時に自動的にデーモンが起動しますが、念のため稼働状態と自動起動設定を確認します。

サービス名は ssh です(sshd でもシンボリックリンク経由で動作します)。

# 稼働状態の確認
sudo systemctl status ssh

# サービスの起動
sudo systemctl start ssh

# OS 起動時の自動起動の有効化
sudo systemctl enable ssh

ステータス表示で Active: active (running) と表示されていれば、正常に待機状態となっています。

設定ファイルの構成と編集

OpenSSH サーバの設定ファイルは /etc/ssh/sshd_config です。 最近の Debian では、設定の可読性やパッケージ更新時の競合を防ぐため、/etc/ssh/sshd_config.d/ ディレクトリ配下に個別の設定ファイル(例: local.conf)を配置する方式が推奨されています。

設定ファイルを編集する前に、必ず元の設定のバックアップを取得しておきます。

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig

個別設定ファイルを作成して基本セキュリティ設定を記述します。

sudo nano /etc/ssh/sshd_config.d/99-security.conf

サーバのセキュリティ強化設定

外部からの不正アクセスや総当たり攻撃(ブルートフォース攻撃)を防ぐため、以下の項目を設定します。

# ポート番号(標準の 22 から任意のポートに変更する場合)
Port 22

# root ユーザーによる直接ログインを禁止
PermitRootLogin no

# 公開鍵認証の有効化
PubkeyAuthentication yes

# パスワード認証の無効化(公開鍵認証での接続確認後に適用)
PasswordAuthentication no

# 空のパスワードでのログインを禁止
PermitEmptyPasswords no

# 認証の最大試行回数
MaxAuthTries 3

▸ パスワード認証無効化の注意点

最初から PasswordAuthentication no を設定すると、公開鍵が正しく登録されていない場合にサーバへ二度とログインできなくなる恐れがあります。 必ず公開鍵でのログインが完全に成功したことを確認してから、パスワード認証を無効化してください。

設定の構文チェックとサービスの再読み込み

設定ファイルを書き換えたら、サービスを再起動する前に必ず構文チェック(テスト)を実行します。 構文エラーがあると SSH サービスが停止し、接続不能になる危険があります。

sudo sshd -t

エラーが表示されなければ、構文は正常です。設定を反映させます。

# 既存の接続を維持したまま設定を反映
sudo systemctl reload ssh

ポート番号などの変更がある場合は restart を実行します。

sudo systemctl restart ssh

▸ 安全確認の重要ルール

設定反映後、現在開いているターミナルは絶対に切断しないでください。 別の新しいターミナルウィンドウを開き、変更後の設定で正常に SSH ログインできることを確認してから、元の接続を閉じるようにします。

ファイアウォール設定(UFW)

ファイアウォール(UFW)を有効にしている場合は、SSH のポートを開放する必要があります。

標準ポート(22 番)を利用している場合の手順は以下の通りです。

# SSH ポートの許可
sudo ufw allow ssh

# またはポート番号を明示指定
sudo ufw allow 22/tcp

# ファイアウォールの状態確認
sudo ufw status

変更したポート番号(例: 2222 番)を使用している場合は、その番号を明示的に許可してください。

sudo ufw allow 2222/tcp