ssh-keygen 入門:ed25519 鍵の生成・確認・管理まとめ
ssh-keygen とは
ssh-keygen はSSHで使う公開鍵・秘密鍵のペアを生成するコマンドです。生成した公開鍵をサーバーやGitHubに登録することで、パスワードなしで安全に認証できます。
鍵を生成する
Ed25519(推奨)
ssh-keygen -t ed25519 -C "your_email@example.com"
-t ed25519 は鍵の種類(アルゴリズム)の指定です。Ed25519は現在推奨される方式で、RSAより短くて安全です。-C はコメントで、どの鍵か識別するために使います(メールアドレスが慣習)。
RSA(互換性が必要な場合)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
古いサーバーやサービスがEd25519に対応していない場合は -t rsa -b 4096 を使います。
生成時の対話
Generating public/private ed25519 key pair. Enter file in which to save the key (/Users/yourname/.ssh/id_ed25519): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /Users/yourname/.ssh/id_ed25519 Your public key has been saved in /Users/yourname/.ssh/id_ed25519.pub
保存先
Enterを押すとデフォルトの ~/.ssh/id_ed25519 に保存されます。複数の鍵を使い分ける場合はパスを変更します。
Enter file in which to save the key (/Users/yourname/.ssh/id_ed25519): /Users/yourname/.ssh/id_ed25519_github
パスフレーズ
秘密鍵を保護する追加のパスワードです。設定しておくと鍵ファイルが漏れても悪用されにくくなります。空のままでも使えます。
生成された鍵を確認する
ls ~/.ssh/
id_ed25519 # 秘密鍵(絶対に外に出さない) id_ed25519.pub # 公開鍵(サーバーやGitHubに登録する)
公開鍵の中身を表示する
cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... your_email@example.com
これをコピーしてサーバーやGitHubに貼り付けます。
鍵の情報を確認する
ssh-keygen -l -f ~/.ssh/id_ed25519.pub
256 SHA256:xxxxxxxxxxxxxxxxxxxxx your_email@example.com (ED25519)
フィンガープリントとアルゴリズムが表示されます。
id_ed25519 ファイルとは
id_ed25519 は Ed25519 アルゴリズムで生成した SSH 秘密鍵のデフォルトファイル名です。id は identity(身元証明)、ed25519 はアルゴリズム名を表しています。
| ファイル名 | 種類 | 説明 |
|---|---|---|
~/.ssh/id_ed25519 |
秘密鍵 | 絶対に外部に出さない |
~/.ssh/id_ed25519.pub |
公開鍵 | サーバーや GitHub に登録する |
RSA を使った場合のデフォルトは id_rsa / id_rsa.pub になります。
id_ed25519 が見当たらない場合は、まだ鍵を生成していないか、-f オプションで別のパスに保存しています。以下のコマンドで確認できます。
ls -la ~/.ssh/
複数の鍵を使い分ける(-f オプション)
用途ごとに別々の鍵を作る場合は -f でファイル名を指定します。
# GitHub用 ssh-keygen -t ed25519 -C "github" -f ~/.ssh/id_ed25519_github # 会社のサーバー用 ssh-keygen -t ed25519 -C "work-server" -f ~/.ssh/id_ed25519_work
~/.ssh/config でホストごとに使う鍵を切り替えられます。
Host github.com IdentityFile ~/.ssh/id_ed25519_github Host work.example.com IdentityFile ~/.ssh/id_ed25519_work
GitHubに公開鍵を登録する
gh コマンドで登録する
gh ssh-key add ~/.ssh/id_ed25519.pub --title "My Mac"
手動で登録する
cat ~/.ssh/id_ed25519.pubで公開鍵をコピー- GitHub → Settings → SSH and GPG keys → New SSH key
- 貼り付けて保存
接続確認
ssh -T git@github.com # Hi username! You've successfully authenticated...
パスフレーズを変更する
既存の鍵のパスフレーズだけ変更できます。
ssh-keygen -p -f ~/.ssh/id_ed25519
よく使うオプション早見表
| オプション | 説明 |
|---|---|
-t ed25519 |
鍵の種類を指定(ed25519 推奨) |
-t rsa -b 4096 |
RSA 4096bit |
-C "comment" |
コメントを付ける(メールアドレスが慣習) |
-f path |
保存先ファイルを指定 |
-l -f key.pub |
鍵のフィンガープリントを表示 |
-p -f key |
パスフレーズを変更 |
まとめ
# 鍵を生成(Ed25519 推奨) ssh-keygen -t ed25519 -C "your_email@example.com" # 公開鍵を表示(GitHubなどに登録する) cat ~/.ssh/id_ed25519.pub # GitHubに登録 gh ssh-key add ~/.ssh/id_ed25519.pub --title "My Mac" # 接続確認 ssh -T git@github.com
秘密鍵(id_ed25519)は絶対に外部に出さず、公開鍵(id_ed25519.pub)だけをサーバーやサービスに登録します。
gh コマンドの使い方全般は「gh コマンド入門:GitHub CLI で PR・Issue・リポジトリをターミナルから操作する」を参照してください。