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)”エラーが発生する主な原因は以下の通りです:
- SSHキーが生成されていない: SSHキーをローカル環境で作成していない場合、GitHubはあなたを認識できません。
-
SSHキーがGitHubに登録されていない: 作成したSSHキーをGitHubのアカウントに追加していない場合、認証が失敗します。GitHubはSSHキーを用いてユーザーを識別するため、このステップは必須です。
-
SSHエージェントが実行されていない: SSHエージェントが起動していない場合、SSHキーが使用されず、接続が拒否されます。
-
誤ったSSHキーが使用されている: 複数のSSHキーを持っている場合、正しいキーが使用されていない可能性があります。
-
ファイルのパーミッション設定が不適切: SSHキーのファイルに不適切なパーミッションが設定されていると、SSHがキーを読み込むことができず、接続が失敗します。
これらの原因は、特に複数のGitHubアカウントを管理している開発者や、異なる環境で作業している場合に起こりやすいです。
解決方法1(最も効果的)
手順1-1(SSHキーの生成)
- ターミナルを開き、SSHディレクトリに移動します。
cd ~/.ssh
- SSHキーを生成します。
ssh-keygen -t rsa -b 4096 -C "あなたのメールアドレス"
これにより、id_rsa
(プライベートキー)とid_rsa.pub
(パブリックキー)が作成されます。
手順1-2(SSHキーのGitHubへの登録)
- 作成したパブリックキーの内容をクリップボードにコピーします。
- macOSの場合:
cat id_rsa.pub | pbcopy
- Linuxの場合:
cat id_rsa.pub | xclip
- Windowsの場合:
Get-Content id_rsa.pub | Set-Clipboard
- GitHubにログインし、右上のプロフィール写真をクリックして「Settings」を選択します。
-
左側のメニューから「SSH and GPG keys」を選び、「New SSH key」をクリックします。
-
タイトルを入力し、コピーしたSSHキーをペーストして「Add SSH key」をクリックします。
手順1-3(SSHエージェントの起動とキーの追加)
- SSHエージェントを起動します。
eval $(ssh-agent -s)
- 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キーの管理が不要になります。
- リモートリポジトリのURLをHTTPS形式に変更します。
git remote set-url origin https://github.com/{user_name}/{project_name}.git
- 次回のプッシュ時に、GitHubのユーザー名とパスワードを入力します。
この方法は、SSHキーの設定を回避できるため、特に初心者にとって便利です。ただし、パスワードを毎回入力する必要があるため、セキュリティが若干低下します。
解決方法3(上級者向け)
SSHキーの設定や接続に関するトラブルが続く場合、SSH設定ファイルを見直すことが有効です。
~/.ssh/config
ファイルを開きます。存在しない場合は新たに作成します。
nano ~/.ssh/config
- 次の内容を追加します。
Host github.com
IdentityFile ~/.ssh/id_rsa
- ファイルを保存して閉じます。
この設定により、SSHがGitHubに接続する際に、指定したSSHキーを使用するようになります。
エラーの予防方法
- **定期的なSSHキーの管理**: SSHキーを定期的に見直し、不要なものは削除することで混乱を防ぎます。
- **パーミッションの確認**: SSHキーのパーミッションが適切に設定されているか確認します。プライベートキーは読み取り専用であるべきです。
chmod 400 ~/.ssh/id_rsa
関連するエラーと対処法
- **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キーの管理を避けることも可能です。定期的なメンテナンスと設定の見直しを行うことで、エラーの再発を防ぎましょう。
コメント