今回は、GitHubへのプッシュやクローン時に発生するpermission denied (publickey)エラーの原因と解決方法について解説します。
Gitを使っていると、次のようなエラーで困ったことはありませんか?
Permission denied (publickey).
fatal: Could not read from remote repository.
- pushやcloneができない
- 急にエラーが出るようになった
- SSHの設定がよく分からない
結論から言うと、このエラーはSSH認証が正しく設定されていないことが原因です。
この記事では、初心者でも分かるように
原因 → 解決方法 → 確認手順まで順番に解説します。
permission denied (publickey) の原因
このエラーは、GitHubにSSH接続する際に、公開鍵認証に失敗している状態です。
主な原因は以下です。
よくある原因一覧
- SSHキーを作成していない
- 公開鍵をGitHubに登録していない
- SSHキーのパスが違う
- SSHエージェントが起動していない
- HTTPSとSSHのURLを間違えている
自分のPCにある秘密鍵(ペアの片方)と、GitHubに渡した公開鍵(もう片方)が合致することで
初めてクローンやプッシュができるようになります。
解決方法①:SSHキーを作成する
まずはSSHキーが存在するか確認します。
ユーザーの.sshディレクトリに作成していればあるはずなので、下記コマンドで確かめてみましょう。
ls ~/.ssh
id_rsa や id_ed25519 がなければ、作成します。
※ここからのコマンドについてはWindowsの場合はGit Bashで実行してください
SSHキーの作成コマンド
SSHキーがない場合には、下記のコマンドで作成することができます。
your_email@example.comの箇所には、GitHubで使う予定のメールアドレスを設定しましょう。
ssh-keygen -t ed25519 -C "your_email@example.com"
入力を求められた場合は、基本は空エンターで進めてOKです。
解決方法②:公開鍵をGitHubに登録する
作成した公開鍵をGitHubに登録します。
公開鍵の確認
作成した鍵を表示してコピーしておきます。
cat ~/.ssh/id_ed25519.pub
catコマンドで表示された内容をコピーします。
VSCodeなどエディタで開いてコピーでもOKです。
GitHub側の設定
コピーした鍵をGitHubに登録します。
- GitHubにログイン
- Settings
- SSH and GPG keys
- New SSH key
ここにコピーした公開鍵を貼り付けます。
タイトルも入力して、Add SSH Keyでキーを追加します。

解決方法③:SSHエージェントを起動する
鍵を作っただけでは、Gitが「どの鍵を使えばいいのか」迷ってしまうことがあります。
そこで、SSHエージェント(鍵の管理係)を起動して、作成した鍵を認識させましょう。
SSHキーを読み込ませます。
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
「PCを再起動したらまたエラーが出るようになった」という場合は、もう一度この手順を実行するか、後述の~/.ssh/config設定を行ってください。
解決方法④:接続確認をする
以下のコマンドで接続テストを行います。
ssh -T git@github.com
成功すると以下が表示されます。
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
usernameのところに、GitHubのユーザー名が表示されます。
解決方法⑤:リモートURLを確認する
HTTPSのURLになっているとSSHは使えません。
確認コマンド
対象のリポジトリの配下で、下記コマンドを使います。
git remote -v
そうすると、接続先のリモートURLの設定が表示されます。
SSHに変更する
HTTPSだった場合は、下記のコマンドで再設定ができます。
git remote set-url origin git@github.com:ユーザー名/リポジトリ名.git
それでも解決しない場合
それでも解決しない場合には、以下もチェックしてください。
鍵の権限が正しくない
アクセス権限がおかしい場合は、下記のコマンドで設定できます。
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
configファイルの設定
通常はなくても接続できるはずですが
接続できない場合は~/.ssh/configにファイルを作成し、config設定をしてみましょう。
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519
まとめ
permission denied (publickey) の原因は、ほぼ以下のどれかです。
- SSHキー未作成
- GitHubに未登録
- SSHエージェント未起動
- リモートURLの設定ミス
迷ったらこの順番で確認すれば解決できるかと思います。
ひとつずつ確認してみましょう。

コメント