概要
GitHubにプッシュしようとした際にgit@github.com: Permission denied (publickey).
というエラーが発生したので、その解決法の備忘録です。
注意
この記事は新卒エンジニアが執筆しています。
そのため内容に間違いや不備がある場合があります。
もし間違いを発見しましたら、どんどん指摘していただけると幸いです。
前提条件
以下のことができている人向けの記事です。
- SSH鍵の作成
- SSH鍵とGitHubと連携
- できている場合は
ssh -T git@github.com
を実行すると、Hi ユーザ名! You've successfully authenticated, but GitHub dose not provide shell access.
と表示されます。
- できている場合は
原因
エラーの原因はSSHエージェントが動作していなかったことでした。
SSHエージェントとは、SSHキーを管理してくれるプログラムのことです。通常はユーザがPCにログインする際に起動するのですが、なんらかの原因でこれが起動していなかったみたいです。
解決手段
1. SSHエージェントが起動しているかの確認
ssh-add -l
上記のコマンドを実行してみてください。The agent has no identities.
と表示される場合は、SSHエージェントが起動していないか、エージェントに鍵が登録されていません。
2. SSHエージェントを起動
SSHエージェントを起動するには以下のコマンドを実行します。
eval `ssh-agent`
3. SSHエージェントに秘密鍵を登録
SSHエージェントに秘密鍵を登録するには以下のコマンドを実行します。
ssh-add -K ~/.ssh/id_rsa # 各自の秘密鍵のパスに合わせて変更してください
Identity passphrase for 秘密鍵のパス
と表示されれば、登録完了です。
この時点でもう一度GitHubにPushしてみると、成功すると思います。
まとめ
SSH鍵を作成していて、GitHubとの連携もしているのにgit@github.com: Permission denied (publickey).
が発生する場合は、SSHエージェントを疑ってみてください。