はじめに

このチャレンジでは、パスワード認証よりも安全な代替手段である SSH 鍵ベース認証(公開鍵認証)を設定します。公開鍵と秘密鍵のペアを生成し、サーバー側で公開鍵を許可し、鍵を使用した接続を許可するように SSH サービスを構成します。これにより、パスワードなしで SSH サーバーにログインできるようになり、セキュリティと利便性の両方が向上します。

公開鍵と秘密鍵のペアを生成する

最初のステップは、暗号鍵のペアを作成することです。このペアは、秘密に保持する必要がある「秘密鍵」と、アクセスを許可するためにサーバーに配置する「公開鍵」で構成されます。

タスク

  • ssh-keygen コマンドを使用して、新しい RSA 公開鍵・秘密鍵ペアを生成してください。

要件

  • 鍵ペアを生成する前に、testuser アカウントに切り替えてください。
  • testuser ユーザーとして鍵ペアを生成してください。
  • ファイルの保存場所を尋ねられたら、デフォルトの場所(/home/testuser/.ssh/id_rsa)を使用してください。
  • 秘密鍵にパスフレーズを設定しないでください(パスフレーズを求められたら、何も入力せずに Enter キーを押してください)。

開始方法

まず、testuser アカウントに切り替えます:

su - testuser
## Password: testuser123

鍵ペアを生成した後、~/.ssh ディレクトリ内のファイルをリスト表示して、新しい鍵を確認できます。

$ ls -l ~/.ssh
total 8
-rw------- 1 testuser testuser 3401 Aug 19 03:49 id_rsa
-rw-r--r-- 1 testuser testuser  759 Aug 19 03:49 id_rsa.pub

id_rsa ファイルが秘密鍵で、id_rsa.pub が公開鍵です。

✨ 解答を確認して練習

公開鍵の承認と SSH サーバーの設定

鍵ペアが作成できたので、サーバーの設定を行う必要があります。これには、公開鍵を承認済み鍵リストに追加することと、SSH サービスが鍵ベース認証を受け入れるように設定することの 2 つの主要な操作が含まれます。

前提条件

引き続き testuser アカウントでログインしていることを確認してください。ログインしていない場合は、切り替えてください:

su - testuser
## Password: testuser123

タスク

  • 公開鍵を ~/.ssh/authorized_keys ファイルにコピーしてください。
  • ~/.ssh/authorized_keys ファイルに適切な権限(パーミッション)を設定してください。
  • SSH サーバー設定ファイル(/etc/ssh/sshd_config)を修正して、公開鍵認証を有効にしてください。
  • 設定変更を適用するために、SSH サービスをリロードしてください。

要件

  • ~/.ssh/authorized_keys ファイルが作成され、公開鍵(~/.ssh/id_rsa.pub)の内容が含まれている必要があります。
  • ~/.ssh/authorized_keys の権限は 600 である必要があります。
  • /etc/ssh/sshd_config 内で、PubkeyAuthentication のコメントアウトを解除し、yes に設定する必要があります。
  • SSH サービスの設定は、sudo pkill -HUP sshd を使用してリロードする必要があります。

ヒント

  • cat コマンドと出力リダイレクト(>>)を使用して、鍵を authorized_keys ファイルに追加できます。
  • ファイル権限の設定には chmod コマンドを使用します。
  • testuser は、/etc/ssh/sshd_config の編集や sshd サービスのリロードを行うための sudo 権限を持っています。
  • このコンテナ環境では systemctl が利用できないため、pkill を使用して sshd プロセスに HUP シグナルを送信し、設定をリロードさせてください。

これらのステップを完了すると、パスワードを求められることなく、SSH 鍵を使用して localhost にログインできるようになります。

$ ssh testuser@localhost "echo Login successful"
Login successful
✨ 解答を確認して練習

まとめ

このチャレンジでは、鍵ベース認証を設定することで SSH のセキュリティを強化する方法を学びました。公開鍵・秘密鍵ペアを生成し、公開鍵を authorized_keys ファイルに追加してサーバー側で承認し、この安全な認証方法を有効にするために SSH サーバーの設定を修正しました。このチャレンジを完了したことで、リモートシステムを安全に管理するための基本的なスキルを習得しました。