Gitの「Permission denied (publickey)」SSHエラーの解決方法

beginner📦 Git2026-06-17| Linux, macOS, Windows (WSL, Git Bash), Git 2.x+

Error Message

Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
#git#ssh#認証#github#devops

Gitに拒絶されたとき

ようやく新機能の実装が終わり、git pushを実行したとき、コードが公開される代わりにターミナルから冷たい拒絶を受けることがあります。プロセスは停止し、次のようなメッセージが表示されます。

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.

これはコードのバグではありません。認証の壁です。GitHub(またはGitLab/Bitbucket)があなたのコンピュータを認識できていないだけです。通常、原因はキーの不足、リモートURLのタイポ、あるいはローカルファイルの権限設定が緩すぎることです。

まず最初に:接続テスト

キーを再生成する前に、プロバイダーへの接続が実際に確立されているか確認しましょう。以下のコマンドを実行して、GitHubからどのように見えているかを確認します。

ssh -T git@github.com

もし 「Hi username! You've successfully authenticated...」 のような成功メッセージが表示されたら、キーは正しく動作しています。問題はリモートURLのタイポである可能性が高いです。もし再び Permission denied (publickey) と表示される場合は、読み進めてください。

ステップ1:既存のキーを確認する

多くの開発者はすでにキーを持っていますが、正しいファイル名を使用していないことがあります。.ssh ディレクトリをリスト表示して、何があるか確認しましょう。

ls -al ~/.ssh

id_ed25519.pubid_rsa.pub といったファイルを探してください。ディレクトリが空だったり、.pub で終わるファイルがない場合は、新しいペアを作成する必要があります。

ステップ2:最新のSSHキーを生成する

新しく作成する場合は、Ed25519キーを生成しましょう。これらは古いRSAキーよりも高速で安全、かつ非常に短い(約68文字)のが特徴です。

ssh-keygen -t ed25519 -C "your_email@example.com"

保存場所を聞かれたら、Enter を押してデフォルトのパスをそのまま使用します。セキュリティ向上のためにパスフレーズを追加することもできますが、スムーズなワークフローのために空のままにする開発者も多いです。

ステップ3:プロバイダーにキーを登録する

次に、サーバーに公開キーを教える必要があります。注意:秘密キー(.pub拡張子がない方)は絶対に共有しないでください。

公開キーの内容をクリップボードにコピーします。

# macOS
pbcopy `git remote set-url origin git@github.com:user/repo.git`
  - **WSLの複雑さ:** Windows Subsystem for Linux を使用している場合、Linux内のキーとWindows PowerShellのキーは別物であることを忘れないでください。通常、どちらか一方の環境を選んで使い続ける必要があります。

## まとめ
`Permission denied (publickey)` の解決は、通常3つのポイントに集約されます。有効なキーを持つこと、それをサーバーに登録すること、そしてローカルの権限を厳格に保つことです。`ssh -T` テストで歓迎のメッセージが表示されたら、認証の悩みから解放されて開発に戻ることができます。

Related Error Notes