ウェブサイト検索

RHEL 9でSSHパスワードなし認証を設定する方法


セキュアシェル(SSH)の略で、SSHは2つのエンドポイント間のトラフィックを暗号化する安全なネットワークプロトコルです。これにより、ユーザーは安全に接続したり、ネットワークを介してファイルを転送したりできます。

SSHは主にネットワークおよびシステム管理者によって使用され、ネットワークを介してサーバーやネットワークデバイスなどのリモート資産に安全にアクセスし管理するためのものです。クライアントとリモートシステム間で交換されるトラフィックを暗号化するために、AESなどの強力な暗号化方式やSHA-2やECDSAのようなハッシュアルゴリズムを使用します。

SSH は 2 つの認証方式を実装しています。パスワードベース の認証と 公開鍵 認証です。後者は、公開鍵認証を使用するため、ブルートフォース攻撃からシステムを保護する優れたセキュリティを提供するため、より好まれます。

それを考慮して、RHEL 9でSSH鍵ベースの認証を設定する方法を示します。

テストラボの設定

これが私たちのセットアップの見た目です。

  • キーペアを生成するLinux/UNIX(UbuntuベースまたはRHELベース)システム。今回のガイドでは、Ubuntuディストリビューションを使用します。
  • RHEL 9のインスタンス(これはオンプレミスまたはクラウドVPSである可能性があります)。

ステップ 1: ECDSA SSH キーペアを生成する

Linuxシステムにアクセスし、次のようにSSHキーのペアを生成します。このガイドでは、より優れた暗号化とセキュリティを提供するECDSAアルゴリズムを使用してキーのペアを生成します。

したがって、ECDSA 鍵ペアを生成するには、次のコマンドを実行してください。

$ ssh-keygen -t ecdsa

このコマンドは、一連のプロンプトを通じて案内します。

デフォルトでは、キー ペアはユーザーのホーム ディレクトリ内の ~/.ssh ディレクトリに保存されます。キーボードの ENTER を押すことで、これをSSHキー ペアの保存先として受け入れることができます。そうでない場合は、好みのパスを指定できます。このガイドでは、デフォルト パスを使用することに決めました。

次に、パスフレーズの提供を求められます。これは基本的に、リモートRHEL 9システムとの接続を確立する際に必要となるパスワードです。SSHキーによる暗号化の上に、追加の保護層を提供します。

しかし、もしあなたの計画がSSH保護の下でプロセスを自動化したり、パスワードなしの認証を設定することであれば、これを空白のままにしておくことをお勧めします。したがって、もう一度ENTERを押してこれを空白のままにします。

以下はコマンドの実行時の出力です。

lsコマンドを使ってSSHキーのペアをちら見することができます。

$ ls -l ~/.ssh

id_ecdsaは秘密鍵であり、id_ecdsa.pubは公開鍵です。秘密鍵は常に秘密にしておくべきであり、誰にも共有したり開示したりするべきではありません。一方、接続したい任意のリモートシステムと公開鍵を共有することは自由です。

ステップ2: パブリックSSHキーをリモートRHEL 9にコピーします

次のステップは、公開鍵をリモートRHEL 9インスタンスにコピーすることです。これを手動で行うこともできますが、ssh-copy-idコマンドラインツールを使用することもできます。後者の方がはるかに簡単で便利なので、次の構文を使用して呼び出してください。

$ ssh-copy-id user@rhel-9-server-IP

この場合、コマンドは次のようになります。tecmintは一般的なログインユーザーであり、192.168.254.129はリモートユーザーのIPアドレスです。

$ ssh-copy-id [email 

接続を続けるには「はい」と入力してください。そして、リモートユーザーのパスワードを入力してENTERキーを押してください。

公開鍵は、リモートユーザーのホームディレクトリの~/.sshディレクトリにあるauthorized_keysファイルにコピーされます。鍵がコピーされたら、公開鍵認証を使用してリモートRHEL 9インスタンスにログインできるようになります。

注: RHEL 9では、SSH経由のrootログインはデフォルトで無効または拒否されています。これは良い理由によるもので、攻撃者がrootアカウントを使用してログインするのを防ぎ、システム上のすべての特権を付与します。そのため、rootとしてRHELシステムに公開鍵をコピーすることは失敗します。

RHEL 9でルートログインを有効にする

ルートとしてログインする必要がある場合は、次のようにデフォルトのSSH設定を編集する必要があります。

$ sudo vim /etc/ssh/sshd_config

次に、PermitRootLogin 属性を yes に設定し、変更を保存してファイルを終了します。

変更を適用するには、SSHサービスを再起動してください。

$ sudo systemctl restart ssh

ステップ3:SSH公開鍵認証を確認する

さて、公開鍵認証を確認しましょう。これを行うには、以下のようにログインしてください。

$ ssh [email 

今回はパスワードの入力を求められることはなく、直接リモートのRHEL 9シェルにアクセスできます。また、前述のauthorized_keysファイルの存在を確認したい場合もあるでしょう。

$ ls -l ~/.ssh 

catコマンドを使用して、暗号化された公開鍵ファイルを表示することもできます。

$ cat ~/.ssh/authorized_keys

私たちがSSH鍵を生成したLinuxデスクトップでは、~/.sshディレクトリにknown_hostsというファイルが生成されます。これは、システムが接続したすべてのリモートサーバーのフィンガープリントを含んでいます。

このガイドでは、RHEL 9でSSHキー認証の設定に成功しました。ご意見をお待ちしております。

関連記事: