ホーム » テクノロジー » 😭 githubへのpushが'Permission denied (publickey)'されたが解決した話

😭 githubへのpushが'Permission denied (publickey)'されたが解決した話

本ブログにGoogle アナリティクスを入れたんで、github に push しようとしたら冷たく拒絶されました。

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

「なによ〜😭 "fatal(致命的)"とか怖い 😭😭」と焦りつつ調べてみたら、どうやら「鍵」に問題があるらしい。まぁ確かに、エラーメッセージにも(publickey)と明記されていることだし、そうなのでしょう。

とはいえ。最後の push は一昨日だし、その後に鍵をなくすような何かをした覚えはない…。とはいえ、拒絶されている以上どうにかするしかありません。

ちなみに今回のお話は、macBook Pro、macOs Monterey(version: 12.5.1)という環境で terminal を使って行いました。

👷‍♀️ 実施した作業

1. ssh で github にアクセスできるか確認

$ ssh -T git@github.com

-> git@github.com: Permission denied (publickey).。またもや拒絶されました。

2. デバックログを確認

上のコードに v をつけるとデバックログが出力されます。なのでそれを確認します。

$ ssh -vT git@github.com

だーっとログが出てきますが、必要なのはidentity fileのところです。なのでidentityを検索して該当するログに飛んでみます。すると、「~/.ssh/鍵ファイルが認識されていない」というメッセージがありました(下記参照)。ファイル名の後に[-1]と記述されているなら、ファイルがないとか認識できないとかそんな感じ。

debug1: identity file /Users/私のフォルダ名/.ssh/id_rsa type -1

この記述以下、全部で 14 メッセージありました。ということは、github さんは 14 回試行したけど該当するものは一個もなかった、だから「あくせすでないど!」となったのでしょう…。github お疲れさま。

3. 秘密鍵が~/.ssh/にあるのか確認

$ ls -al ~/.ssh

と入れるとなんか出てくるけど、上記に該当するもの(たとえば id_rsa)は 1 つもない。ということは、鍵を作らなければ…。

参考: 既存の SSH キーの確認 – GitHub Docs

4. 新しい SSH キーの生成

新しい SSH キーを生成して ssh-agent に追加する – GitHub Docsのとおりにやりました。「新しい SSH キーを生成する」-> 「SSH キーを ssh-agent に追加する」までやって、GitHub アカウントへの新しい SSH キーの追加 – GitHub Docsに進みます。

5. アカウントへの新しい SSH キーの追加

公開キーをクリップボードにコピーします。この例ではid_ed25519.pubをコピーしていますが、もし他の鍵ファイルをコピーする場合は、該当ファイル名に変更します(例:~/.ssh/id_rsa.pub)。

$ pbcopy < ~/.ssh/id_ed25519.pub

これを github の自分のアカウントの「設定> SSH キーと GPG キー」に入って追加します。詳細はGitHub アカウントへの新しい SSH キーの追加 – GitHub Docsのとおり。

Key を入れる窓でペースト(ctrl+v)して、Add SSH Keyボタンをクリック!

したのですが、git push ~~しても拒否されてしまいました。なぜ 😭?

なので、一度 github の鍵の登録を削除して、もう一度「公開キーのコピー」と「キーの追加」の手順を繰り返しました。

2 度めはあっさり通過。何が良かったのか悪かったのかわからないのですが、コピーがちゃんとできていなかったとか、あるいはキーを追加したときに無駄なスペースか改行を入れてしまったとか、そういうミスだと思います。割とよくやるから。

🐸 まとめと感想

鍵がなくなると面倒になることになるのは、現実社会と同じ。でも、コンピューターの世界では、鍛冶屋に頼まずとも鍵が作れるのは素晴らしいですね。

それにしても、一昨日まで使っていた鍵はどこに行ったの?

上部へスクロール