🔐【Gitセットアップガイド】RSAではなくed25519を使ったGitHub SSH接続セットアップ


新しいPCを手に入れたとき、開発環境のセットアップは一通り終わった…
と思いきや、GitHubへのSSH接続設定を忘れていた！
そんな経験、ありませんか？

しかも、かつて広く使われていたRSA方式は、現代の基準では「脆弱」と評価されつつあり、より安全な方式への移行が推奨されています。

この記事では、最新の安全な方式である**ed25519**を使い、**GitHubへのSSH接続を一からセットアップする方法**を、解説します。


## なぜRSAではなくed25519なのか？

かつてはRSA（特に2048ビット）が標準でしたが、次の理由により今は**ed25519が推奨**されています。

- **セキュリティ**：RSA-2048は将来的に安全性に不安あり。ed25519は**2^128**ビット級のセキュリティを持ち、量子コンピュータへの耐性も高い。
- **速度**：署名生成・検証がRSAより数倍高速。
- **鍵サイズが小さい**：公開鍵・秘密鍵のサイズがコンパクト（32バイト/64バイト）。
- **耐副チャネル攻撃**：タイミング攻撃やキャッシュ攻撃にも設計段階から配慮されている。

セキュリティもパフォーマンスも妥協しないなら、今はed25519一択、、、？


# セットアップ手順（macOS）
macOSを前提に話を進めさせてください🙇
git自体のインストールに関しては以下を参考に行ってください。
> 【macOS版】Homebrewを使ってgitをインストール
https://qiita.com/inakuuun/items/57fd4162d17d72e0c4fa

## 1. ed25519鍵を生成する

まず、SSHキーを生成します。（ここで `-t rsa` を使わない。）

```bash
ssh-keygen -t ed25519 -C "your_email@example.com"
```

- `-t ed25519`：**鍵方式を明示的に指定**。
- `-C "コメント"`：後で管理しやすいようにメールアドレスなどを設定。

実行すると、以下が聞かれます：

```bash
Enter file in which to save the key (/Users/you/.ssh/id_ed25519): [Enter]
Enter passphrase (empty for no passphrase): ********
Enter same passphrase again: ********
```

> パスフレーズは空でもいいですが、セキュリティ向上のため推奨されてはいるそうです。


## 2. 公開鍵をGitHubに登録する

公開鍵の中身を確認してコピーします。

```bash
cat ~/.ssh/id_ed25519.pub
```

GitHubにログインし、  
`Settings > SSH and GPG keys > New SSH key` から公開鍵を登録しましょう。


## 3. `~/.ssh/config` を整える

複数の鍵を使い分けたり、キーチェーンに保存して快適運用するため、SSH設定ファイルを編集します。

```bash
vi ~/.ssh/config
```

以下のようなものを追記：

```ssh
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes
  AddKeysToAgent yes
  UseKeychain yes
```

> **補足：**  
> ここで設定する `Host` 名は自由に設定可能です。たとえば、複数のGitHubアカウントを使い分ける場合は `github-work` や `github-personal` のように分けることで、それぞれ違う鍵を使うこともできます。

>参考
> - [複数のGitHubアカウントを保持していいの？GitHubサポートに問い合わせてみた](https://www.timedia.co.jp/tech/20221025-tech/)
> - [複数のGitHubアカウントを使い分けたい時の設定方法とTips](https://zenn.dev/taichifukumoto/articles/how-to-use-multiple-github-accounts)



## 4. ssh-agentに登録しておく（初回だけ）

```bash
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
```

これで、パスフレーズ入力は**1回だけ**で済みます。  
次回以降はキーチェーンから自動で取得されます。


## 5. 動作確認

```bash
ssh -T git@github.com
```

成功すると：

```
Hi your-username! You've successfully authenticated, but GitHub does not provide shell access.
```

これでセットアップは完了です！

---

# まとめ

| 項目            | 内容                                       |
|-----------------|--------------------------------------------|
| 使用する鍵方式    | ed25519                                   |
| セキュリティ      | 2^128ビット級、RSA-2048より高い           |
| パフォーマンス    | 高速な署名・検証、軽量な鍵サイズ         |
| 運用              | キーチェーン登録でパスフレーズもスマートに |

---

# あとがき

今もなお、RSAで鍵を作っている記事や設定例がネットには多く残っています。  

私自身もセキュリティ関連に詳しいわけではないのですが、近しい存在に精通した方がおり、
「今時RSAはセキュリティ的に．．．．．．」と言われ、意識するようになりました。

今回この記事がセキュリティ面だけでなく、PCを変えた時のgitセットアップの時のリファレンスとして活用していただけたらなと思います！

# 🔗 関連リンク・参考資料

- [GitHub公式：SSHキーの設定](https://docs.github.com/en/authentication/connecting-to-github-with-ssh)
- [OpenSSH公式：ed25519について](https://man.openbsd.org/ssh-keygen#t)
- [【macOS版】Homebrewを使ってgitをインストール](https://qiita.com/inakuuun/items/57fd4162d17d72e0c4fa)
- [複数のGitHubアカウントを保持していいの？GitHubサポートに問い合わせてみた](https://www.timedia.co.jp/tech/20221025-tech/)
- [複数のGitHubアカウントを使い分けたい時の設定方法とTips](https://zenn.dev/taichifukumoto/articles/how-to-use-multiple-github-accounts)