Back

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

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に追加します:

  1. GitHubのSSH設定にアクセス
  2. 「New SSH key」をクリック
  3. キーを貼り付けて保存

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

すべてが正常に動作するか確認

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.

OpenReplay