git@github.com: Permission denied (publickey)の解決方法【2025年最新版】

git@github.com: Permission denied (publickey)の解決方法【2025年最新版】

エラーの概要・症状

Gitを使用してリモートリポジトリにアクセスしようとした際に、”git@github.com: Permission denied (publickey)”というエラーメッセージが表示されることがあります。このエラーは、SSHキーによる認証が失敗したことを示しています。具体的には、GitHubがあなたのSSHキーを認識できないため、リモートリポジトリへのアクセスを拒否しています。これにより、コードのプッシュやクローン作成、プルリクエストなどの操作ができず、開発作業が滞ることになります。

ユーザーは、次のような状況でこのエラーに直面します:

  • Gitを用いてリモートリポジトリにアクセスしようとする。
  • SSH URLを使用しているが、正しい設定がされていない。
  • 環境によっては、SSHキーがGitHubアカウントに追加されていない場合もあります。

このエラーは、特に新規ユーザーやSSHの設定に不慣れなユーザーにとって、非常に困惑するもので、迅速な解決が求められます。

このエラーが発生する原因

“Permission denied (publickey)”エラーが発生する主な原因は以下の通りです:

  1. SSHキーが生成されていない: SSHキーをローカル環境で作成していない場合、GitHubはあなたを認識できません。

  2. SSHキーがGitHubに登録されていない: 作成したSSHキーをGitHubのアカウントに追加していない場合、認証が失敗します。GitHubはSSHキーを用いてユーザーを識別するため、このステップは必須です。

  3. SSHエージェントが実行されていない: SSHエージェントが起動していない場合、SSHキーが使用されず、接続が拒否されます。

  4. 誤ったSSHキーが使用されている: 複数のSSHキーを持っている場合、正しいキーが使用されていない可能性があります。

  5. ファイルのパーミッション設定が不適切: SSHキーのファイルに不適切なパーミッションが設定されていると、SSHがキーを読み込むことができず、接続が失敗します。

これらの原因は、特に複数のGitHubアカウントを管理している開発者や、異なる環境で作業している場合に起こりやすいです。

解決方法1(最も効果的)

手順1-1(SSHキーの生成)

  1. ターミナルを開き、SSHディレクトリに移動します。
   cd ~/.ssh
  1. SSHキーを生成します。
   ssh-keygen -t rsa -b 4096 -C "あなたのメールアドレス"

これにより、id_rsa(プライベートキー)とid_rsa.pub(パブリックキー)が作成されます。

手順1-2(SSHキーのGitHubへの登録)

  1. 作成したパブリックキーの内容をクリップボードにコピーします。
  • macOSの場合:
     cat id_rsa.pub | pbcopy
  • Linuxの場合:
     cat id_rsa.pub | xclip
  • Windowsの場合:
     Get-Content id_rsa.pub | Set-Clipboard
  1. GitHubにログインし、右上のプロフィール写真をクリックして「Settings」を選択します。

  2. 左側のメニューから「SSH and GPG keys」を選び、「New SSH key」をクリックします。

  3. タイトルを入力し、コピーしたSSHキーをペーストして「Add SSH key」をクリックします。

手順1-3(SSHエージェントの起動とキーの追加)

  1. SSHエージェントを起動します。
   eval $(ssh-agent -s)
  1. SSHキーをエージェントに追加します。
   ssh-add ~/.ssh/id_rsa

注意点とトラブルシューティング

  • SSHキーは必ずGitHubアカウントに関連付ける必要があります。関連付けが終わったら、再度リモートリポジトリにアクセスしてみてください。
  • SSHエージェントが正常に動作しているか確認するために、次のコマンドを実行します。
  •    ssh -T git@github.com

成功すれば、「Hi [username]! You’ve successfully authenticated, but GitHub does not provide shell access.」と表示されます。

解決方法2(代替手段)

SSHキーの設定が面倒な場合、HTTPSプロトコルを使用することも可能です。これにより、SSHキーの管理が不要になります。

  1. リモートリポジトリのURLをHTTPS形式に変更します。
   git remote set-url origin https://github.com/{user_name}/{project_name}.git
  1. 次回のプッシュ時に、GitHubのユーザー名とパスワードを入力します。

この方法は、SSHキーの設定を回避できるため、特に初心者にとって便利です。ただし、パスワードを毎回入力する必要があるため、セキュリティが若干低下します。

解決方法3(上級者向け)

SSHキーの設定や接続に関するトラブルが続く場合、SSH設定ファイルを見直すことが有効です。

  1. ~/.ssh/configファイルを開きます。存在しない場合は新たに作成します。
   nano ~/.ssh/config
  1. 次の内容を追加します。
   Host github.com
       IdentityFile ~/.ssh/id_rsa
  1. ファイルを保存して閉じます。

この設定により、SSHがGitHubに接続する際に、指定したSSHキーを使用するようになります。

エラーの予防方法

  • **定期的なSSHキーの管理**: SSHキーを定期的に見直し、不要なものは削除することで混乱を防ぎます。
  • **パーミッションの確認**: SSHキーのパーミッションが適切に設定されているか確認します。プライベートキーは読み取り専用であるべきです。
  •    chmod 400 ~/.ssh/id_rsa
  • **ドキュメントの確認**: GitHubや他のGitサービスのドキュメントを定期的に確認し、最新の設定方法を把握しておくと良いでしょう。

関連するエラーと対処法

  • **Permission denied (publickey) without a key**: SSHキーが存在しない場合、まずはSSHキーを生成し、GitHubに追加します。
  • **Could not open a connection to your authentication agent**: SSHエージェントが起動していない場合、eval $(ssh-agent -s)を実行して起動します。
  • **Bad permissions**: SSHキーのパーミッションが不適切な場合、chmod 400 ~/.ssh/id_rsaで修正します。

まとめ

“git@github.com: Permission denied (publickey)”エラーは、SSHキーの設定や管理に起因することが多いです。適切な手順を踏んでSSHキーを生成し、GitHubに登録することで、エラーを解消できます。また、HTTPSプロトコルを使用することで、SSHキーの管理を避けることも可能です。定期的なメンテナンスと設定の見直しを行うことで、エラーの再発を防ぎましょう。

コメント

タイトルとURLをコピーしました