第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