LinuxでSSHキーを使用してroot SSHログインを有効にする方法

公開鍵を使用してrootユーザーのSSHログインを有効にするには、rootユーザーの設定ファイルに公開鍵を追加しauthorized_keys、設定をPermitRootLogin prohibit-password行い、OpenSSHの設定を検証してから、サービスをリロードしてください。これにより、rootユーザーは鍵を使用してログインできますが、パスワード認証とキーボードによる認証はブロックされます。オプションの定義については、 OpenSSHのsshd_configマニュアルを参照してください。

SSH経由で管理者アカウントとしてLinuxサーバーに接続する端末
この端末の図は信頼プロンプトを示しています。ホストのフィンガープリントを信頼チャネルを通じて実際に確認してから承認してください。

直接ルートアクセスを行うと、承認されたキーを持つユーザーは無制限の制御権限を得られます。これは、管理権限を持つシステムでのみ使用し、できればプライベートネットワークまたはファイアウォールの内側で使用してください。日常的な作業には、指定されたユーザーとしてサインインし、を使用してくださいsudo。リモートSSH設定を変更する前に、現在のセッションを開いたままにして、別の復旧パスを確保しておいてください。

SSHサーバーを編集する前に

  • 実行可能なアカウントで接続しsudo、OpenSSHサーバーが実行されていることを確認してください。
  • クライアント用のSSHキーペアを用意してください。公開鍵(通常は拡張子が.sshのファイル.pub)をコピーします。秘密鍵は絶対に共有しないでください。

鍵ベースのSSHのためだけにrootパスワードを設定しないでください。パスワードのロックと公開鍵アクセスは別々の制御手段ですが、ディストリビューションのアカウントポリシーによってはログインに影響が出る場合があります。Ubuntuのユーザー管理ガイドには、パスワードをロックするだけでは既存のSSH鍵アクセスは無効にならないと説明されています。

キーベースのルートSSHログインを有効にする

1. 通常の管理者として接続してください。

クライアントのターミナルから、既にsudo権限を持つアカウントで接続してください。

ssh admin@server.example.com

例の値を置き換えてください。新しいホストキーのフィンガープリントを受け入れる前に、信頼できるチャネルを通じて検証してください。

2. 公開鍵をrootアカウントに追加する

サーバー上で、rootユーザーのSSHディレクトリを制限付き権限で作成し、認証済みキーリストを編集します。

sudo install -d -m 700 /root/.ssh
sudoedit /root/.ssh/authorized_keys

公開鍵全体を1行に貼り付けて保存してください。秘密鍵は絶対に貼り付けないでください。また、既存のエントリはすべて保持してください。次に、所有権と権限を制限してください。

sudo chown -R root:root /root/.ssh
sudo chmod 700 /root/.ssh
sudo chmod 600 /root/.ssh/authorized_keys
rootのSSHディレクトリを作成した後、rootのauthorized_keysファイルを開いたターミナルエディタ
rootユーザーのauthorized_keysファイルに、完全な公開鍵を1行で追加してください。ここに表示されている短縮された鍵は、単なる表示上のプレースホルダーです。

3. ルートログインポリシーを設定する

サーバー設定をエディタで開きます。例えば、以下のとおりです。

sudoedit /etc/ssh/sshd_config

有効なPermitRootLoginディレクティブを見つけて、次のように変更してください。

PermitRootLogin prohibit-password

これは、root パスワードを許可してしまう可能性があるよりも安全ですPermitRootLogin yes。重複するディレクティブを追加しないでください。OpenSSH は最初に取得した値を使用するため、ディストリビューションによってはIncludeファイルが読み込まれる場合があります。アクティブな設定を編集し、関係のない認証オプションは変更しないでください。

PermitRootLogin が prohibit-password に設定されている OpenSSH サーバーの設定
強調表示されている行はルート権限を制御します。表示されているその他の認証オプションは別の設定であり、ポリシーに合致している必要があります。

4. 設定を適用する前に検証する

まず構文エラーがないか確認してください。

sudo sshd -t

出力がない場合は、構文チェックに合格したことを意味します。再読み込みする前に、報告されたエラーを修正してください。有効な値を確認するには、以下を使用してください。

sudo sshd -T | grep permitrootlogin

出力が であることを確認してくださいpermitrootlogin prohibit-password。そうでない場合は、インクルードされたファイルと該当するMatchブロックを確認してください。sshdマニュアルでは、-tを構文チェック、 を有効構成レポートとして定義しています-T。

sshd構成検証を実行し、有効なPermitRootLogin値を表示するターミナル
変更を適用する前に sshd -t を実行し、有効な root ログイン設定を確認してください。

5. SSHサービスを再起動します

お使いのディストリビューションのサービス名を使用してください。UbuntuとDebianでは一般的に以下のサービス名が使用されます。

sudo systemctl reload ssh.service

Fedora、RHEL、その他多くのディストリビューションは、一般的に以下のものを使用しています。

sudo systemctl reload sshd.service

リロードがサポートされていない場合は、systemctl restart一致するサービス名を使用して、元のセッションを開いたままにしてください。Ubuntu のOpenSSH ガイドでは、再起動する前に実行することも推奨していますsshd -t。

LinuxターミナルでUbuntuまたはDebian上でOpenSSHサービスを再読み込みする
設定が構文チェックを通過したら、SSHデーモンを再起動してください。サービス名はディストリビューションによって異なります。

6. 2番目の端末からルートアクセスをテストする

クライアント上で別のターミナルを開き、インストールした公開鍵に対応する秘密鍵を指定してください。

ssh -i ~/.ssh/id_ed25519 root@server.example.com

キーパスとホスト名を置き換えてください。ホストキーの入力を求められた場合は確認し、セッションがroot権限で開かれることを確認してください。テストが失敗した場合は、元のセッションからトラブルシューティングを行い、アクセスが復旧するまでセッションを開いたままにしてください。

別の端末でrootアカウントを使用してSSHセッションが正常に開かれた。
管理者セッションを閉じる前に、一致する秘密鍵を使用して新しいクライアント端末からテストを行ってください。

ルートログインが拒否された場合のトラブルシューティング

についてはPermission denied (publickey)、完全な公開鍵が にあり/root/.ssh/authorized_keys、クライアントが対応する秘密鍵を使用していることを確認してください。所有権と権限を再確認してください。

sudo chown -R root:root /root/.ssh
sudo chmod 700 /root/.ssh
sudo chmod 600 /root/.ssh/authorized_keys

有効なPermitRootLogin値、AllowUsers/DenyUsersルール、サーバーログ、および root のログインシェルも確認してください。ショートカットとして設定を変更することは避けてくださいyes。これは、root に許可される認証方法を拡張する可能性があります。

Linuxターミナルでroot SSHキーファイルの所有権と制限付きパーミッションを修正する
root の SSH ディレクトリは root が所有し、ディレクトリのパーミッションは 700、authorized_keys のパーミッションは 600 に設定する必要があります。

不要になったら、root SSH ログインを無効にしてください。

ルートSSHによる直接アクセスを無効にするには、activeディレクティブを次のように変更します。

PermitRootLogin no

適切なサービスを実行しsudo sshd -tて再起動してください。これにより、管理者アカウントは利用可能なまま、rootユーザーによる直接的なSSHアクセスがブロックされます。パスワードロックだけでは、rootユーザーの公開鍵ログインを無効にできない場合があります。

OpenSSHサーバーの設定でPermitRootLoginをnoに設定し、その後検証とサービス再起動コマンドを実行しました。
PermitRootLoginをnoに設定し、検証してページを再読み込みしてください。その他の認証オプションは別個のものであり、このroot権限のみの変更には必要ありません。

詳細については、OpenSSHの設定マニュアルおよびUbuntu ServerのSSHドキュメントを参照してください。

コメントを残す

失われたパーティションとハードディスクデータを安全に復元する方法

失われたパーティションとハードディスクデータを安全に復元する方法

TestDiskとPhotoRecを使って、失われたパーティションやファイルを復元する方法を学びましょう。ソースドライブを保護し、安全にスキャンを行い、復元したデータを別のディスクに保存します。

LinuxデスクトップでQRコードをスキャンする方法

LinuxデスクトップでQRコードをスキャンする方法

CoBangを使えば、Webカメラまたは画像ファイルでLinux上でQRコードをスキャンできます。インストールオプション、セットアップ手順、Flatpakカメラへのアクセスに関する修正方法については、こちらをご覧ください。

Cameractrlsを使ってLinuxでウェブカメラの設定を変更する方法

Cameractrlsを使ってLinuxでウェブカメラの設定を変更する方法

Cameractrlsを使用してLinux上でウェブカメラの設定を変更しましょう。露出、色、フリッカー低減などのサポートされているコントロールを調整し、互換性のあるビデオモードを確認できます。

LinuxにPhpStormをインストールする方法:ツールボックス、Tar.gz、Snap、およびAUR

LinuxにPhpStormをインストールする方法:ツールボックス、Tar.gz、Snap、およびAUR

LinuxにPhpStormをインストールするには、JetBrains Toolboxを使用するか、スタンドアロンのtar.gzアーカイブを使用するか、SnapおよびArch AURオプションを選択してください。Javaは既にバンドルされています。

LinuxにCisco Packet Tracerをインストールする方法

LinuxにCisco Packet Tracerをインストールする方法

Cisco Packet Tracer 9.0.1 を Ubuntu 64 ビット版にダウンロードし、APT を使用して DEB パッケージをインストールし、ターミナルでライセンスに同意してサインインすると、ラボを開始できます。

LinuxでCD-ROMをISOイメージとしてバックアップする方法

LinuxでCD-ROMをISOイメージとしてバックアップする方法

Linux上でGNOME Disksまたはddコマンドを使用してCD-ROM ISOイメージを作成します。光学ドライブを識別し、コピーを監視し、イメージを検証し、破損したディスクやオーディオディスクに別のツールが必要な場合を把握できます。

XFCE 4でデュアルパネルを設定する方法

XFCE 4でデュアルパネルを設定する方法

各ディスプレイごとに個別のXFCE 4パネルを作成し、2番目のパネルを右側の出力に割り当て、位置とサイズを調整し、必要なランチャーとステータス項目を追加します。

LinuxでGIMPを使って画像を切り抜く方法

LinuxでGIMPを使って画像を切り抜く方法

LinuxでGIMPを使って写真の背景を削除する方法:被写体をトレースし、選択した背景を削除し、透明度を保持して、再利用可能なPNG形式でエクスポートします。

FlightGearを無料でダウンロード:公式インストールガイド

FlightGearを無料でダウンロード:公式インストールガイド

FlightGearは公式サイトから無料でダウンロードできます。Windows、macOS、Linuxの各パッケージを比較し、データファイルをインストールして、最初のフライトを開始しましょう。

OKSampler:キーボードビートのための無料かつシンプルな音楽サンプラー

OKSampler:キーボードビートのための無料かつシンプルな音楽サンプラー

OKSamplerはMP3クリップをキーボードのキーにマッピングし、音声をループ再生できます。この旧型フリーウェアの機能、旧機能が失われた箇所、ダウンロード前に確認すべき点について解説します。