CentOS7でrootのSSHログインを無効化する

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
「SSHでrootログインを禁止したいけど、設定方法がわからない」
「rootでのSSH接続を許可したままサーバーを公開しているのが不安」

インターネットに公開するLinuxサーバーでは、rootアカウントへのSSH直接ログインを無効にするのはセキュリティの基本です。
rootパスワードが漏洩した場合や、ブルートフォース攻撃に対して脆弱になります。

この記事では、CentOS7 / RHEL7でrootのSSHログインを無効化する手順を解説します。
【この記事でわかること】
PermitRootLogin no/etc/ssh/sshd_config に設定するだけで無効化できる
・設定後は systemctl restart sshd で反映が必要
・無効化前に必ず一般ユーザー+sudo環境を整えてからロックアウトを防ぐ

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

なぜrootのSSH直接ログインを禁止するのか

SSHでのroot直接ログインを許可していると、以下のリスクがあります。

ブルートフォース攻撃のターゲットになりやすい:rootはすべてのLinuxサーバーに存在するアカウント名のため、攻撃者に狙われやすい
誤操作のリスク:rootでログインすると全権限があるため、誤ったコマンド実行でシステムに致命的なダメージを与える可能性がある
操作ログが残らない:rootで直接操作すると、誰が何をしたか追跡しにくくなる

対策は「一般ユーザーでSSHログインし、必要な時だけsudoでroot権限を使う」という設計です。

【重要】設定前の準備

rootのSSHを無効化する前に、必ず以下を確認してください。

失敗するとサーバーに一切ログインできなくなります。

sudo権限を持つ一般ユーザーが存在するか:id ユーザー名 で確認
そのユーザーでSSHログインできるか:別のターミナルで接続テストを行う
sudoが正しく設定されているか:sudo -l で確認

rootのSSHログインを無効化する手順

1. sshd_configを編集する

SSHの設定ファイル /etc/ssh/sshd_config をrootユーザーで編集します。

# vi /etc/ssh/sshd_config

ファイル内の PermitRootLogin の行を探します。

# 変更前(コメントアウトされているか yes になっている) #PermitRootLogin yes # 変更後:コメントアウトしてyesを無効にし、noの行を追加 #PermitRootLogin yes PermitRootLogin no

編集後、:wq で保存終了します。

2. sshdを再起動して設定を反映する

# sshdを再起動する # systemctl restart sshd.service # 再起動後にsshdが起動していることを確認する # systemctl status sshd * sshd.service - OpenSSH server daemon Active: active (running)

再起動後も、現在のSSHセッションは維持されます。安心して作業を続けられます。

3. rootのSSHログインが拒否されることを確認する

別のターミナルまたはローカルから、rootでのSSHログインを試みて拒否されることを確認します。

# rootでSSH接続を試みる(拒否されることを確認) $ ssh root@localhost root@localhost's password: Permission denied, please try again.

「Permission denied」が表示されれば、rootのSSH無効化が正しく設定されています。

トラブルシュート:設定後にsudoユーザーでもログインできなくなった場合

万が一、一般ユーザーでのSSHログインもできなくなった場合は、
コンソール(物理またはVMのコンソール)からrootでログインして設定を戻してください。

# コンソールからrootでログインし、設定を元に戻す # vi /etc/ssh/sshd_config # PermitRootLogin no → #PermitRootLogin yes に戻す # systemctl restart sshd

本記事のまとめ

やりたいこと コマンド / 設定
rootのSSH無効化設定を追加 /etc/ssh/sshd_config に PermitRootLogin no を追加
sshdを再起動して設定反映 systemctl restart sshd.service
sshdの状態を確認 systemctl status sshd
rootログイン拒否を確認 ssh root@localhost(Permission deniedが表示されることを確認)

AlmaLinux 10でのSSH鍵認証・初期設定もあわせて確認

PermitRootLogin no による rootのSSH無効化はCentOS 7/RHEL系後継のAlmaLinux 10でも同じ手順で適用できます。設定箇所は /etc/ssh/sshd_config、反映は systemctl restart sshd と、CentOS 7時代から変わっていません。
ただしAlmaLinux 10では本番投入前に「SSH鍵認証への切替」「firewalldのSSHポート確認」「SELinux初期モードの判断」までを一括で押さえておくのが安全です。AlmaLinux 10のサーバー初期設定を10項目に整理した手順は、「AlmaLinux 10 サーバー初期設定10項目|SELinux・firewalld・dnf・SSH鍵認証」で解説しています。CentOS 7からAlmaLinux系へ乗り換える方は、本記事のroot無効化設定とあわせて参照してください。

SSHセキュリティ設定、正しくできていますか?

rootログイン禁止はSSHセキュリティの第一歩です。鍵認証の設定や、AllowUsersによるアクセス制限も組み合わせると、さらに安全になります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。