SSH キー生成: 初心者のための完全ガイド
SSH(Secure Shell)は、リモートサーバーに安全に接続するための必須ツールです。パスワードを使用するよりもはるかに強力なセキュリティを提供するSSHキーを基にした認証方式は、すべての開発者にとって欠かせない知識です。この記事では、SSHキー生成の基本概念から実際の使い方まで、初心者の視点に合わせてわかりやすく詳しく説明します。
SSH キー生成が必要な理由
従来のパスワード方式は、入力過程での露出リスクがあり、ブルートフォース攻撃に脆弱であるという欠点があります。SSHキーは公開キー(Public Key)と秘密キー(Private Key)という一対のキーを使用して、これらの問題を解決します。
- 秘密キー (Private Key): ユーザーのコンピュータに安全に保管され、絶対に外部に露出してはいけません。このキーがなければサーバーに接続できません。
- 公開キー (Public Key): 接続しようとするサーバーに登録するキーです。公開してもセキュリティ上問題ありません。
SSH接続時、サーバーはユーザーの公開キーを利用して認証リクエストを暗号化し、ユーザーコンピュータの秘密キーがこれを成功裏に復号化すると接続が許可される方式です。これにより、パスワードをやり取りすることなく安全に通信できます。
SSH キー生成方法: ssh-keygen
コマンド
SSHキーを生成する最も基本的なコマンドは ssh-keygen
です。ターミナルを開いて次のコマンドを入力してみてください。
ssh-keygen
コマンドを実行するといくつかの質問が出てきます。一つずつ見てみましょう。
-
Enter file in which to save the key (/home/youruser/.ssh/id_rsa):
-
生成されるキーのファイル保存場所を尋ねる質問です。特別な理由がない限り、デフォルトの場所である
.ssh/id_rsa
を使用するのが良いです。単にEnter
を押してください。
-
-
Enter passphrase (empty for no passphrase):
-
秘密キーにパスワードを設定するかどうかを尋ねる質問です。 セキュリティ強化のために必ず設定することをお勧めします。 パスワードを設定すれば、秘密キーが漏洩してもパスワードを知らなければ使用できないため、二重のセキュリティが可能です。パスワードを入力すると、ターミナルに何も表示されないので注意して入力し、
Enter
を押してください。
-
-
Enter same passphrase again:
- 前に入力したパスワードを再度入力して確認します。
-
予想結果:
Your identification has been saved in /home/youruser/.ssh/id_rsa
Your public key has been saved in /home/youruser/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx youruser@yourmachine
The key's randomart image is:
+---[RSA 3072]----+
| .=*o. |
| . +.E+ |
| . o.=. . |
| o . o |
| . S . |
| . . |
| . |
| |
| |
+----[SHA256]-----+
キーの生成が完了すると ~/.ssh/
ディレクトリに2つのファイルが生成されます。
id_rsa
: 秘密キー (Private Key)id_rsa.pub
: 公開キー (Public Key)
RSA と Ed25519: どの方式を選べばいいのか?
SSHキーを生成する際、ssh-keygen
コマンドに -t
オプションを使ってキーの暗号化方式を指定することができます。主に使われる方式は RSAと Ed25519です。
1. RSA方式 (-t rsa
)
- SSHの初期から広く使用されている方式です。
- 安定性が検証されており、大多数のシステムと互換性があります。
- キーの長さを指定可能で、一般的には
4096
ビットの使用が推奨されます。- 例:
ssh-keygen -t rsa -b 4096
- 例:
2. Ed25519方式 (-t ed25519
)
- より新しい暗号化方式で、Curve25519楕円曲線暗号化に基づいています。
- RSAに比べて 短いキー長でも同等またはそれ以上のセキュリティを提供します。
- キー生成および認証速度が速く、より少ないリソースを使用します。
- 最新のシステムのほとんどではサポートされていますが、非常に古いシステムでは非互換の可能性があります。
- 例:
ssh-keygen -t ed25519
- 例:
推奨の方法とその理由
現時点では特別な互換性の問題がない場合、 Ed25519方式の使用を強くお勧めします。
- より良いセキュリティ: 短いキー長でも強力なセキュリティを提供し、ブルートフォース攻撃などに対してより強固です。
- より速い性能: キー生成および認証プロセスがより効率的です。
- 簡潔さ: RSAのようにキーの長さで悩む必要がなく、簡単に生成できます。
Ed25519 キー生成の例
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_my_server -C "my_server_ssh_key"
-t ed25519
: Ed25519方式でキーを生成します。-f ~/.ssh/id_ed25519_my_server
: キーファイルの名前をid_ed25519_my_server
に指定します。(既存のid_rsa
と区別するために名前を変更できます。)-C "my_server_ssh_key"
: キーに対するコメント(Comment)を追加します。どの目的で生成されたキーなのか分かりやすく名前を付けることをお勧めします。
予想される結果:
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase): # パスワード入力 (推奨)
Enter same passphrase again: # パスワード再確認
Your identification has been saved in /home/youruser/.ssh/id_ed25519_my_server
Your public key has been saved in /home/youruser/.ssh/id_ed25519_my_server.pub
The key fingerprint is:
SHA256:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy my_server_ssh_key
The key's randomart image is:
+--[ED25519 256]--+
| .+=+ |
| . oE B |
| o + O |
| . + + |
| o . S |
| . = . |
| . B + |
| . * = o |
|+ o . = . |
+----[SHA256]-----+
これで、SSHキーを生成し管理する基本的な方法を理解されたことでしょう。生成された公開キー(id_ed25519_my_server.pub
または id_rsa.pub
)をリモートサーバーの ~/.ssh/authorized_keys
ファイルに登録すれば、パスワードなしで安全に接続できます。次の記事では生成したSSHキーをサーバーに登録して使う方法について詳しく説明します。
疑問点があれば、いつでもコメントで質問してください!
コメントはありません。