1.公開鍵と秘密鍵とは?
秘密鍵と公開鍵は、公開鍵暗号方式の2つの主要なコンポーネントです。
この方式は、安全な通信のために広く利用されています。以下に、それぞれの鍵について簡単に説明します。
公開鍵
- 公開鍵は、文字通り公開される鍵です。誰でもこの鍵を使用してメッセージを暗号化することができますが、そのメッセージを復号できるのは秘密鍵を持っている受信者だけです。
- 公開鍵は、デジタル署名の作成にも使用されます。この場合、メッセージの送信者は自分の秘密鍵を使用してメッセージに署名し、受信者は送信者の公開鍵を使用してその署名を検証します。
秘密鍵
- 秘密鍵は、公開鍵と対をなす鍵であり、秘密に保たれます。この鍵は、公開鍵によって暗号化されたメッセージを復号するために使用されます。
- 秘密鍵は、デジタル署名の作成にも使われます。この場合、メッセージの真正性と送信者の身元を確認するために重要です。
公開鍵暗号方式の特徴
- 非対称暗号方式:公開鍵と秘密鍵は数学的に関連していますが、公開鍵から秘密鍵を導き出すことは計算上実行不可能です。
- セキュリティ:秘密鍵は絶対に公開されず、持ち主だけがアクセスできます。これにより、通信の安全性が保たれます。
- 多用途性:暗号化とデジタル署名の両方に使用され、データの機密性と完全性、送信者の認証を保証します。
秘密鍵と公開鍵は、公開鍵暗号化(非対称暗号化)システムにおける2つの主要な要素です。このシステムでは、2つの異なる鍵が使用されます:一つは公開鍵で、もう一つは秘密鍵です。これらの鍵は数学的に関連しており、一方の鍵で暗号化されたデータはもう一方の鍵でのみ復号化することができます。以下に、それぞれの鍵の特徴と使用方法について詳しく説明します。
2. 秘密鍵と公開鍵の生成
必要なツール
- SSHキーを生成するためには、
ssh-keygen
コマンドを使用します。
これはほとんどのLinux、macOSシステムに標準でインストールされています。
Windowsでは、Git BashやWSL (Windows Subsystem for Linux) を使用することでssh-keygen
が利用できます。
手順
- ターミナルを開く: LinuxやmacOSでは標準のターミナルアプリを、WindowsではGit BashやWSLを開きます。
- 鍵を生成する: 以下のコマンドを実行します。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ここで、-t
は鍵の種類(ここではrsa
)、-b
は鍵のビット数(ここでは4096
)、-C
は鍵に関連付けるコメント(通常はメールアドレス)です。
3. 保存先とパスフレーズの入力: コマンドを実行すると、
鍵の保存先(デフォルトは~/.ssh/id_rsa
)と、オプションで鍵を保護するためのパスフレーズを入力するよう求められます。
結果
- 秘密鍵(
id_rsa
)と公開鍵(id_rsa.pub
)が生成されます。秘密鍵は決して他人に渡さないでください。
C:\Users\ユーザー名\.ssh
3. 公開鍵の登録
公開鍵は、SSH接続を受け入れるサーバーに登録する必要があります。例として、GitHubに公開鍵を登録する方法を説明します。
- 公開鍵をクリップボードにコピーする:
- macOS:
pbcopy < ~/.ssh/id_rsa.pub
- Linux:
xclip -sel clip < ~/.ssh/id_rsa.pub
- Windows (Git Bash):
cat ~/.ssh/id_rsa.pub | clip
- macOS:
- GitHubにログインし、設定に移動する:
- 右上のプロフィールアイコンから「Settings」に移動します。
- SSH and GPG keysを選択し、「New SSH key」をクリック:
- タイトルにわかりやすい名前を入力し、Keyフィールドに公開鍵をペーストします。
- 「Add SSH key」をクリックして登録完了。
4. 鍵の試験
SSH接続を試して、設定が正しく完了していることを確認します。GitHubの場合、以下のコマンドを使用してテストできます。
成功すれば、GitHubからあなたのユーザー名で認識されたメッセージが表示されます。
これで、秘密鍵と公開鍵の生成から登録、そして試験までのプロセスが完了しました。SSHキーを利用することで、パスワードなしで安全にリモートサーバーへの接続が可能になります。
ssh -T git@github.com