新人エンジニアからの質問 GitHub に SSH キーを使って認証しようとしたが、認証できませんでした

次のようなメッセージが出ました。

$ git push -u origin main
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

このエラー Permission denied (publickey). は、GitHub に SSH キーを使って認証しようとしたが、認証ができなかったことを示しています。


💡 解決策

以下の手順を試して、問題を解決してください。


1. SSH キーが設定されているか確認

まず、ローカルの SSH キーを確認します。

ls -l ~/.ssh/

以下のようなファイルが表示されるか確認してください(名前は異なる場合あり)。

  • id_rsa(秘密鍵)
  • id_rsa.pub(公開鍵)

👀 もし .ssh フォルダが空だった場合 SSH キーが未生成の可能性があるので、次の 「2. SSH キーを生成する」 に進んでください。


2. SSH キーを生成する(未設定の場合)

もし .ssh にキーがない場合、新しく SSH キーを作成します。

ssh-keygen -t rsa -b 4096 -C "your-email@example.com"

実行時のポイント:

  • your-email@example.comGitHub に登録しているメールアドレス に置き換えてください。
  • 「Enter a file in which to save the key」Enter を押すと、~/.ssh/id_rsa に保存されます。
  • パスフレーズは空でも OK ですが、セキュリティのために設定を推奨 します。

3. SSH 公開鍵を GitHub に登録

SSH キーが作成されたら、公開鍵を GitHub に登録する必要があります。

  1. 公開鍵の内容を確認 cat ~/.ssh/id_rsa.pub これをコピーしてください。
  2. GitHubにログイン → SSH キーを追加
    • GitHubのSSHキー設定ページ にアクセス
    • 「New SSH Key」をクリック
    • Title: 任意の名前(例: "My Laptop")
    • Key: さきほどコピーした公開鍵を貼り付け
    • 「Add SSH Key」をクリック

4. SSH 接続ができるかテスト

GitHub への接続を確認します。

ssh -T git@github.com

成功すると以下のメッセージが表示されます:

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

このメッセージが表示されない場合、次の 「5. SSH エージェントを有効にする」 に進んでください。


5. SSH エージェントを有効にする

SSH キーを追加したのにエラーが出る場合は、SSH エージェントにキーを登録します。

eval "$(ssh-agent -s)"   # SSHエージェントを起動
ssh-add ~/.ssh/id_rsa    # SSHキーを登録

その後、もう一度 ssh -T git@github.com を試してください。


6. origin の URL を SSH に変更

もし、リモートリポジトリの URL が HTTPS になっていると、SSH を使えません。現在の URL を確認します。

git remote -v

HTTPS の場合

origin  https://github.com/your-username/your-repo.git (fetch)
origin  https://github.com/your-username/your-repo.git (push)

SSH に変更する

git remote set-url origin git@github.com:your-username/your-repo.git

もう一度 git push -u origin main を試してください。


✅ まとめ

手順やること
1ls -l ~/.ssh/ で SSH キーがあるか確認
2ssh-keygen -t rsa -b 4096 -C "your-email@example.com" で SSH キー作成
3cat ~/.ssh/id_rsa.pub で公開鍵をコピーし、GitHub に登録
4ssh -T git@github.com で接続確認
5eval "$(ssh-agent -s)"ssh-add ~/.ssh/id_rsa でエージェントに登録
6git remote set-url origin git@github.com:your-username/your-repo.git

これで解決できるはずです! 🚀✨

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。