2026年7月19日

2026年7月19日

SSHパスワード認証を無効化する方法

はじめに

インターネットに公開されたサーバーの22番ポートは、世界中の攻撃者から24時間絶え間なくブルートフォース攻撃を受けています。auth.logを眺めれば「Failed password for root」が数千行積み上がる光景は珍しくありません。

最も効果的な対策は、SSHのパスワード認証を完全に無効化し、公開鍵認証のみを許可することです。鍵は数百桁の数学的な強度を持ち、辞書攻撃や総当たりで突破することは現実的に不可能です。

ただし手順を誤ると自分自身がログインできなくなる致命的なリスクがあります。本記事では、安全に公開鍵認証へ移行し、ロックアウトを防ぐためのチェックリスト付き手順を解説します。

症状・背景

  • /var/log/auth.log に大量のFailed password試行が記録されている
  • fail2banで遮断しても新規IPからの攻撃が止まらない
  • 監査ツールがパスワード認証有効を脆弱性として指摘してくる
  • root権限のあるサーバーをパスワードのみで運用するのが怖い

手順・設定方法

ステップ1: 公開鍵を作成しサーバーへ登録

クライアント側で鍵を生成し、サーバーへ転送します。

# クライアントPCでed25519鍵を生成(コメント付き)
ssh-keygen -t ed25519 -C "user@workstation" -f ~/.ssh/id_ed25519
# サーバーへ公開鍵をコピー(初回はパスワード認証で接続)
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server.example.com
# 鍵認証でログインできるか確認
ssh -i ~/.ssh/id_ed25519 user@server.example.com 'whoami'
# パーミッションを確認
ssh user@server.example.com 'ls -la ~/.ssh/'

ステップ2: 既存セッションを残したまま設定変更

作業セッションは閉じず、別のターミナルで作業します。

# 現在の設定をバックアップ
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F)
# sshd_configを編集
sudo nano /etc/ssh/sshd_config
# 以下の項目を設定
# PasswordAuthentication no
# PubkeyAuthentication yes
# ChallengeResponseAuthentication no
# UsePAM yes
# PermitRootLogin prohibit-password

ステップ3: 構文チェックと再読み込み

sshdを再起動する前に必ずチェックします。

# 設定ファイルの構文をチェック
sudo sshd -t
# 問題なければ設定を反映(既存セッションは切れない)
sudo systemctl reload sshd
# sshdの状態を確認
sudo systemctl status sshd
# 反映された設定値を確認
sudo sshd -T | grep -iE 'passwordauth|pubkey|permitroot'

ステップ4: 別ターミナルから新規接続でテスト

必ず元のセッションを閉じずに動作確認します。

# 新しいターミナルから鍵認証で接続テスト
ssh -v user@server.example.com
# パスワード認証が拒否されることを確認(失敗するのが正解)
ssh -o PubkeyAuthentication=no user@server.example.com
# 認証ログで成功記録を確認
sudo tail -20 /var/log/auth.log | grep sshd
# 問題なければ元のセッションも閉じてOK

注意事項

  • 必ず鍵認証で1回ログイン成功を確認してからパスワード認証を無効化する
  • クラウドプロバイダのコンソール(EC2 Instance Connectなど)で復旧経路を確保しておく
  • ~/.sshは700、authorized_keysは600、ホームディレクトリは他者書込不可にする
  • AllowUsersやAllowGroupsを併用するとさらに堅牢化できる

まとめ

1. 鍵生成と登録 をssh-copy-idで安全に実施

2. 既存セッションを保持 したまま設定変更する

3. sshd -t で構文確認、reloadで無停止反映

4. 別ターミナルで接続テスト してから元セッションを閉じる

5. 復旧経路(コンソール接続) を必ず用意してから作業する

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ