SSH鍵ベース認証
SSH鍵ペアを生成し、公開鍵をサーバーへ配置して、セキュリティを高めるためにパスワード認証を無効化します。
「SSH鍵ベース認証」はCoddyKit上の無料Linux Server Deployment & SSH Masteryレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLinux Server Deployment & SSH Mastery学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
鍵ペアで SSH の可能性を広げる
ようこそ。このレッスンでは、SSH 鍵ベース認証について学びます。この方法は、従来のパスワードを使ってサーバーにログインするよりも、はるかに安全で便利です。
SSH 鍵はデジタル上の握手のように機能し、毎回パスワードを入力しなくても本人確認を行えます。
公開鍵と秘密鍵の仕組み
SSH 鍵認証では、暗号鍵のペアを使用します。
- 秘密鍵:ローカルマシンに保存し、秘密にしておく必要がある鍵です。デジタルロック専用の唯一の鍵だと考えてください。
- 公開鍵:アクセスしたいサーバーに配置する鍵です。秘密鍵でしか開けられない特殊なロックのようなものです。
接続しようとすると、サーバーがクライアントにチャレンジを送り、クライアントは秘密鍵を使って自分の身元を証明します。
SSH 鍵を生成する
ローカルマシンで ssh-keygen コマンドを使うと、SSH 鍵ペアを生成できます。デフォルトでは RSA 鍵ペアが作成されます。
プロンプトが表示されたら、秘密鍵を保護するパスフレーズを設定できます。これによりセキュリティがさらに強化され、鍵を使用する前にパスフレーズの入力が必要になります。
ssh-keygen鍵生成をカスタマイズする
セキュリティを強化するには、ED25519 などの新しい鍵タイプを使用することをおすすめします。鍵のファイル名をカスタマイズすることもできます。
-t ed25519:ED25519 アルゴリズムを指定します。-f ~/.ssh/my_server_key:my_server_keyとmy_server_key.pubという名前のファイルを作成します。
秘密鍵には必ず強力なパスフレーズを設定してください。
ssh-keygen -t ed25519 -f ~/.ssh/my_server_key鍵ファイルを理解する
生成した鍵は通常、ローカルマシンの ~/.ssh/ ディレクトリに保存されます。次の 2 つのファイルが作成されます。
id_ed25519(またはid_rsa):これは秘密鍵です。厳重に管理し、決して共有しないでください。id_ed25519.pub(またはid_rsa.pub):これは公開鍵です。このファイルをサーバーにコピーします。
これらのファイルの権限も、セキュリティ上とても重要です。
公開鍵を簡単に配置する
公開鍵をサーバーに配置する最も簡単な方法は、ssh-copy-id コマンドを使うことです。このコマンドは公開鍵をサーバーの ~/.ssh/authorized_keys ファイルに安全にコピーします。
新しいサーバーでこのコマンドを初めて実行するときは、パスワードの入力が必要です。その後は、パスワードでのログインが不要になることが多いです。
ssh-copy-id user@your_server_ip公開鍵を手動で配置する
ssh-copy-id を利用できない場合や、手動での方法を使いたい場合は、自分で公開鍵をサーバーにコピーできます。
まず、サーバー上に ~/.ssh ディレクトリが存在し、適切な権限(700)になっていることを確認します。次に、公開鍵を ~/.ssh/authorized_keys ファイルに追記し、権限を 600 に設定します。
cat ~/.ssh/id_ed25519.pub | ssh user@your_server_ip \
"mkdir -p ~/.ssh && chmod 700 ~/.ssh && \
cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"新しい鍵で接続する
公開鍵をサーバーに配置したら、SSH で接続できます。デフォルトの鍵名(例:id_rsa や id_ed25519)を使用した場合、SSH が自動的に鍵を見つけます。
カスタムの鍵名(例:my_server_key)を使用した場合は、-i フラグで鍵を指定する必要があります。
ssh -i ~/.ssh/my_server_key user@your_server_ipセキュリティのためにパスワードログインを無効にする
セキュリティを強化するため、鍵ベースのログインが機能することを確認したら、サーバーでのパスワード認証を無効にすることを強くおすすめします。
サーバー上の SSH デーモン設定ファイル(/etc/ssh/sshd_config)を編集し、PasswordAuthentication yes を no に変更して、SSH サービスを再起動します(例:sudo systemctl restart sshd または sudo service ssh restart)。
# On the server, edit /etc/ssh/sshd_config
PasswordAuthentication no
# Then restart SSH service
sudo systemctl restart sshd鍵認証チェック
SSH 鍵ベース認証の仕組み、鍵の生成方法、鍵の配置方法を学びました。理解度を確認してみましょう。
まとめ:鍵で SSH を安全にする
よくできました。SSH 鍵ベース認証を習得しました。次のことを学びました。
- 公開鍵と秘密鍵の違い。
ssh-keygenを使った鍵ペアの生成方法。ssh-copy-idまたは手動でサーバーに公開鍵を配置する方法。- パスワードを使わずに安全に接続する方法。
- サーバーでパスワード認証を無効にする理由と方法。
SSH 鍵は、安全で効率的なサーバー管理に欠かせない基本ツールです。練習を続けていきましょう。
よくある質問
「SSH鍵ベース認証」レッスンは無料ですか?
はい。「SSH鍵ベース認証」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Linux Server Deployment & SSH Masteryコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
「SSH鍵ベース認証」で何を学びますか?
SSH鍵ペアを生成し、公開鍵をサーバーへ配置して、セキュリティを高めるためにパスワード認証を無効化します。 ブラウザで直接実行するハンズオンコードでLinux Server Deployment & SSH Masteryを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Linux Server Deployment & SSH Masteryを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLinux Server Deployment & SSH Masteryは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「SSH鍵ベース認証」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLinux Server Deployment & SSH Masteryレッスンでコードを書いて実行できますか?
はい。すべてのLinux Server Deployment & SSH Masteryレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- SSHプロトコルを理解する
- SSHクライアントの設定
- SSH鍵ベース認証
- SSHサーバーの堅牢化