GitHubへのプッシュ時に「Permission denied (publickey)」エラーを修正する方法

GitHubへプッシュしようとした際に「Permission denied (publickey)」エラーが発生していませんか?このエラーは、SSHキーの問題によりGitHubがあなたを認証できないことを意味します。早速修正していきましょう。
重要なポイント
- このエラーは、GitHubがSSH接続を認証できない場合に発生します
- 主な原因は3つ:SSHキーの未作成、GitHubへのキー未登録、リモートURL形式の誤り
ssh -T git@github.com
で接続をテストし、修正が機能しているか確認できます- SSHエージェントと設定ファイルは、複数アカウントの管理や永続的な認証に役立ちます
このエラーの意味
「Permission denied (publickey)」エラーは、GitがSSHを使用してGitHubに接続しようとした際に認証が失敗したときに発生します。SSHキーは、あなたのコンピュータがGitHubと安全に通信するための特別なパスワードのようなものだと考えてください。
このガイドでは、3つの主な原因とそれぞれの修正方法を正確に説明します。
3つの主な原因(と修正方法)
1. コンピュータにSSHキーが作成されていない
クイックチェック:
ls -la ~/.ssh
「No such file or directory」と表示されるか、フォルダが空の場合は、SSHキーを作成する必要があります。
修正方法: 新しいSSHキーペアを生成します:
ssh-keygen -t ed25519 -C "your-email@example.com"
Enterキーを3回押してデフォルト設定を受け入れます。これにより2つのファイルが作成されます:
~/.ssh/id_ed25519
(秘密鍵 - 秘密にしておく)~/.ssh/id_ed25519.pub
(公開鍵 - GitHubと共有する)
2. 公開鍵がGitHubに追加されていない
SSHキーが作成されていても、公開鍵をアカウントに追加するまでGitHubはあなたを認識しません。
修正方法: まず、公開鍵をコピーします:
cat ~/.ssh/id_ed25519.pub
次に、GitHubに追加します:
- GitHubのSSH設定にアクセス
- 「New SSH key」をクリック
- キーを貼り付けて保存
3. リモートURLの形式が間違っている
GitHubのSSH URLはgit@github.com:
で始まる必要があります - メールアドレスやユーザー名ではありません。
現在のURLを確認:
git remote -v
正しい形式:
git@github.com:username/repository.git
間違った形式:
youremail@github.com:username/repository.git ❌
https://github.com/username/repository.git ❌ (これはHTTPSでSSHではありません)
修正方法: 正しいSSH URLに更新します:
git remote set-url origin git@github.com:username/repository.git
Discover how at OpenReplay.com.
すべてが正常に動作するか確認
GitHubへのSSH接続をテストします:
ssh -T git@github.com
次のように表示されるはずです:
Hi username! You've successfully authenticated...
これが機能すれば、permission deniedエラーなしでGitHubにプッシュできるようになります。
よくあるトラブルシューティング
SSHエージェントが実行されていない
キーが存在しているのに動作しない場合、SSHエージェントが実行されていない可能性があります。
修正方法:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
複数のGitHubアカウント
複数のアカウントを管理するには、SSH設定ファイルが必要です。~/.ssh/config
を作成します:
Host github.com-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
Host github.com-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
次のようにクローンします:
git clone git@github.com-work:company/repository.git
プラットフォーム固有の注意事項
- Windowsユーザー: コマンドプロンプトやPowerShellではなく、Git Bashを使用してください
- macOS/Linuxユーザー: ターミナルを使用してください
両プラットフォームとも、上記と同じコマンドに従います。
まとめ
「Permission denied (publickey)」エラーはイライラするものですが、修正は簡単です。ほとんどの場合、SSHキーを作成してGitHubに公開鍵を追加するだけで済みます。プッシュする前にssh -T git@github.com
で接続を確認することを忘れないでください。
正しく設定すれば、そのリポジトリで二度とこのエラーに遭遇することはありません。
よくある質問
技術的には可能ですが、各アカウントに別々のキーペアを作成することがベストプラクティスです。これによりセキュリティが向上し、異なるリポジトリを管理する際のトラブルシューティングが容易になります。
SSHは一度設定すれば、プッシュごとにパスワードが不要なため便利です。HTTPSはどこでも動作しますが、操作ごとに認証トークンまたはパスワードが必要です。
いいえ。ssh-addを使用してSSHエージェントにキーを追加すると、セッション中パスフレーズがキャッシュされます。これにより、セッションごとに1回だけ入力すればよくなります。
直ちに新しいキーペアを生成し、新しい公開鍵でGitHubを更新してください。GitHub設定から侵害されたキーを削除し、秘密鍵は決して共有しないでください。
Understand every bug
Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.