はじめに
このチャレンジでは、パスワード認証よりも安全な代替手段である SSH 鍵ベース認証(公開鍵認証)を設定します。公開鍵と秘密鍵のペアを生成し、サーバー側で公開鍵を許可し、鍵を使用した接続を許可するように SSH サービスを構成します。これにより、パスワードなしで SSH サーバーにログインできるようになり、セキュリティと利便性の両方が向上します。
このチャレンジでは、パスワード認証よりも安全な代替手段である SSH 鍵ベース認証(公開鍵認証)を設定します。公開鍵と秘密鍵のペアを生成し、サーバー側で公開鍵を許可し、鍵を使用した接続を許可するように SSH サービスを構成します。これにより、パスワードなしで SSH サーバーにログインできるようになり、セキュリティと利便性の両方が向上します。
最初のステップは、暗号鍵のペアを作成することです。このペアは、秘密に保持する必要がある「秘密鍵」と、アクセスを許可するためにサーバーに配置する「公開鍵」で構成されます。
ssh-keygen コマンドを使用して、新しい RSA 公開鍵・秘密鍵ペアを生成してください。testuser アカウントに切り替えてください。testuser ユーザーとして鍵ペアを生成してください。/home/testuser/.ssh/id_rsa)を使用してください。まず、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 サービスが鍵ベース認証を受け入れるように設定することの 2 つの主要な操作が含まれます。
引き続き testuser アカウントでログインしていることを確認してください。ログインしていない場合は、切り替えてください:
su - testuser
## Password: testuser123
~/.ssh/authorized_keys ファイルにコピーしてください。~/.ssh/authorized_keys ファイルに適切な権限(パーミッション)を設定してください。/etc/ssh/sshd_config)を修正して、公開鍵認証を有効にしてください。~/.ssh/authorized_keys ファイルが作成され、公開鍵(~/.ssh/id_rsa.pub)の内容が含まれている必要があります。~/.ssh/authorized_keys の権限は 600 である必要があります。/etc/ssh/sshd_config 内で、PubkeyAuthentication のコメントアウトを解除し、yes に設定する必要があります。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 サーバーの設定を修正しました。このチャレンジを完了したことで、リモートシステムを安全に管理するための基本的なスキルを習得しました。