はじめに
Udemyの講座で学習中、それぞれの講座内でSSHキーというものを作成しました。
その中でとある問題が発生し、解決過程で改めてSSHキーを理解せねば・・・と感じました。
環境
PC:Windouws11
使用エディタ:Vscode
PHPとLaravel学習中での出来事(XAMPP)
参考資料
SSHキーについては以下記事に詳しく記述されているので、割愛させていただきます
どういう状況?
B> git --version
git version 2.44.0.windows.1
//Githubから、Newリポジトリー。名前やPrivate等選択、作成。
B> git init
B> git add -A
B> git remote add origin git@github.com:・・・
B> git push -u origin main
//なぜかここまではうまくいきましたが、少しファイルの内容を修正してgit pushする際に次のようになりました
B> git push
Enter passphrase for key '/c/Users/star_/.ssh/id_rsa':
パスワードわすれた
SSH鍵(秘密鍵)のパスフレーズを再度作成
// 古い鍵をリネーム(削除はしない)
> cd ~/.ssh
> mv id_rsa id_rsa_old
> mv id_rsa.pub id_rsa_old.pub
// 新しい鍵を作成。ファイル名の指定はそのまま(id_rsa)。パスフレーズは「空にする」
> ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
// 公開鍵をGitHubに登録するためコピーする
> cat ~/.ssh/id_rsa.pub
// Github側でSSHキーの登録を行う(資料参考)
接続を確認して再度pushしてみる
//接続確認
> ssh -T git@github.com
// 作業していたディレクトリに戻ってpush
> cd C:\xampp\htdocs\laravel\B
> git push
//成功!
あれ?現状のSSHキーの数ってどうなってる?
> ls ~/.ssh
ディレクトリ: C:\Users\star_\.ssh
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2025/05/06 (火) 11:15 3389 id_rsa
-a---- 2025/05/06 (火) 11:15 751 id_rsa.pub
-a---- 2025/01/23 (木) 23:37 3434 id_rsa_old
-a---- 2025/01/23 (木) 23:37 750 id_rsa_old.pub
-a---- 2025/01/23 (木) 23:52 828 known_hosts
-a---- 2025/01/23 (木) 23:52 92 known_hosts.old
今のディレクトリ(プロジェクト)はどのカギをつかっている?
C:\xampp\htdocs\laravel\B>
B > git remote -v
origin git@github.com:・・・.git (fetch)
origin git@github.com:・・・.git (push)
➡SSH鍵なので秘密鍵が(id_rsa、id_rsa.pub、id_rsa_old、id_rsa_old.pub)これらの内のどれかという事は分からない💦
改めて、GitHubに接続する際に、どのSSH鍵が使われているか確認
B > ssh -T git@github.com -v
この後かなり長いメッセージ?が表示され、使われているSSH鍵を次のような文章から確認できます
debug1: Offering public key: C:\\Users\\star_/.ssh/id_rsa RSA
debug1: Server accepts key: C:\\Users\\star_/.ssh/id_rsa RSA
つまり、このプロジェクトは C:\Users\star_.ssh\id_rsa の鍵を使って GitHub に接続している!
✅ ログの見方
行 | 意味 |
---|---|
Offering public key |
PCがGitHubに「この鍵でどうですか?」と提案してる |
Server accepts key |
GitHubが「OK!その鍵で認証するよ」と受け入れてる |
まとめ
現段階でSSHキーを作りすぎている&Githubにも登録しすぎている、と思われるので、整理に繋げるためにも今回のエラーは起こってよかった事。
多分この問題が発生しなかったら、適当に流していたと思われます😢
参考資料の記事も、ちょくちょく見返して、理解を深めていきたいと思います。
※プロジェクトごとの設定はその時が来たら学びたいと思います。
おまけ1:id_rsa
と id_rsa.pub
の違い
ファイル名 | 内容 | 説明 |
---|---|---|
id_rsa |
🔒 秘密鍵 | 自分のPCに保存されている大事な鍵。絶対に他人に見せない! |
id_rsa.pub |
🔓 公開鍵 | GitHubに登録する用の鍵。これをサーバー(GitHub)側が使って、PCから来た鍵を検証。 |
✅ 余談:id_rsa_old
などの他の鍵について…。
もし以前の講座で作った id_rsa_old
を使いたいなら、SSH設定ファイル(~/.ssh/config
)で使い分けの設定が必要になるそうです。
(つまり、複数プロジェクトで異なる鍵を使う際、~/.ssh/config
を使って設定を分ける)
※何も設定していないと、id_rsa
が常に優先して使われます。