パスワードによるrootログインの無効化
パスワードによるrootログインが危険な理由、PermitRootLoginオプションの違い、マシンへのアクセスを失わずに無効化する方法を説明します。
更新日 2026年8月23日
root という名前は誰もが知っています。すべてのマシンに存在し、完全な権限を持っています。ブルートフォース攻撃者に残された推測材料はパスワードだけです。root のパスワードログインを無効化すれば、たった1つのパラメータで攻撃のカテゴリを丸ごと排除できます。
準備
まずはフォールバック、それから禁止です。順序は、あなたがやりたいと感じる順番とは逆になります。
- sudo 権限を持つユーザーを作成します — ユーザーと sudo。
- そのユーザーに SSH キーを追加し、別のターミナルウィンドウでログインを確認します。
sudo -iが動作することを確認します。- ここまで来て初めて設定を変更します。
ssh artem@<address>
sudo whoami
2番目のコマンドが root を返したなら、フォールバックは確保できています。
設定オプション
ファイル /etc/ssh/sshd_config.d/99-hardening.conf 内で設定します。
| 値 | 意味 |
|---|---|
PermitRootLogin yes | パスワードを含め、すべてが許可されます。誰もこのままにはしません |
PermitRootLogin prohibit-password | キーは機能し、パスワードは拒否されます。妥当な最低ラインです |
PermitRootLogin forced-commands-only | 事前に定義されたコマンドのみ、自動化向けです |
PermitRootLogin no | root は SSH 経由でまったくログインできません。最も厳格なオプションです |
推奨の組み合わせ:
PermitRootLogin prohibit-password
PasswordAuthentication no
2番目のパラメータは、root だけでなくすべてのユーザーのパスワードログインを一括で閉じます。詳細は SSH の堅牢化 を参照してください。
適用と確認
sudo sshd -t
sudo systemctl restart ssh
sudo sshd -T | grep -i permitrootlogin
別のウィンドウから、root がパスワードを受け付けなくなったこと、および自分のユーザーがキーでログインできることを確認します:
ssh root@<address>
ssh artem@<address>
sshd を再起動しても現在のセッションは切断されません。確認が終わるまでそのセッションは開いたままにしておいてください。
引き続き利用できるもの
この変更は SSH にのみ影響します。root のパスワードは依然として必要であり、引き続き機能します:
- マシンのコンソール、両方のタブ — テキストのタブと「Screen」のタブ。
- リカバリディスク経由でのログイン時。
- システム内部での
su -コマンド。
パスワード自体は暗号化されて保存されており、/hosting/vds/m/<id> のパネルの「アクセス」タブにあるボタンで表示できます。これが緊急時の経路であり、失ってはなりません — バックアップキーとパスワード を参照してください。
よくある間違い
| 間違い | 結果 | 解決策 |
|---|---|---|
| root を無効化したが、sudo 権限を持つユーザーを一度も作成しなかった | 誰もマシンを管理できなくなります | パネルのコンソールを使ってユーザーを作成します |
| キーが root にしか存在しない | 新しいユーザーがログインできません | authorized_keys をコピーし、権限を修正します |
| 設定が別のファイルによって上書きされている | ルールが効果を発揮しません | ファイルではなく sshd -T を確認します |
| 禁止がコンソールにも適用されると期待している | 完全にロックダウンされたという誤った安心感 | コンソールは設計上、常に機能します |
隣のウィンドウで代替ログインを確認せずに root ログインを無効化しないでください。確認には10秒しかかかりませんが、コンソール経由での復旧にははるかに長い時間がかかります。