Programming

githubへpushできないときの対処(permission denied)

 Author:fumiyasac

本日は早起きしたので、久しぶりにコーヒーを飲みながら優雅に「今までのコミットをgithubにpushしちゃうぞ〜」なんて思っていた矢先に(permission denied)が発生して、僕の優雅な朝が〜という状態になったので、その対処法を自分なりにまとめてみました。

1. どんなエラーがになったのですか?

いつものようにgit addしてgit commitして…とやっていたわけですが、git pushをしようとしたら以下のようになりました。

ターミナル

  1. $ git push origin master
  2. Permission denied (publickey).
  3. fatal: The remote end hung up unexpectedly

原因は、公開鍵がgithubアカウントに紐づいていないことみたいで、再度公開鍵の設定を行わないといけないようです。

2. 今回のトラブルシューティングを行う

では、トラブルシューティングの方にとりかかるわけですが、こういう時はまずgithubのhelpを読んでみる。英語怖いと最初は思うかもしれませんが、慌てないで怖がらないで読んでやってみることが重要です。(と自分に言い聞かせる)

関連するリンク

まずは現在のSSH Keyが正しいか確認する。

ターミナル

  1. $ ssh-add -l

確認するURL

ここで、合っていない場合は公開鍵を新たに作り直して再度登録します。

ターミナル

  1. $ cd ~/.ssh
  2. $ ssh-keygen -t rsa -C "info@example.com"
  3. Generating public/private rsa key pair.
  4. Enter file in which to save the key (/Users/user/.ssh/id_rsa):
  5. /Users/user/.ssh/id_rsa already exists.
  6. Overwrite (y/n)? y
  7. Enter passphrase (empty for no passphrase): (パスワードを入れます)
  8. Enter same passphrase again: (パスワードを入れます)
  9. Your identification has been saved in /Users/user/.ssh/id_rsa.
  10. Your public key has been saved in /Users/user/.ssh/id_rsa.pub.
  11. ...以下略

うまくいったら、以下のコマンドでkeyをコピーする。

ターミナル

  1. $ pbcopy < ~/.ssh/id_rsa.pub

先程のコマンドでコピーしたものを、先程の「登録されているSSH Keyの確認」ページにある「Add SSH key」ボタンをクリックして表示されたフォームのKeyの項目に貼付ける。※Titleは何でもよいです。

その後、「Add Key」ボタンをクリックすると、前に設定したパスワードを聞かれるのでそちらを入力して完了。

これで元通りにgit pushができるようになったと思います。

3. 最初は慣れなかったGitだけども今は結構好き

今まではSubversionを使っている事が多かったので、最初Gitを使った時は「なんじゃこりゃあ」ってな感じでものすごく戸惑いました。
しかし、勉強会のご縁等で触れる機会が次第に多くなり、その度に色々教えて下さる方がいて、実務でも使うようになってと少しずつではありますが使うことができるようになりました。

RailsやCakePHPも同じ様なきっかけやいきさつを経て使うようになったし、きっかけからの使い倒すみたいな流れができるのは本当にいい事だし、教えて下さった方にも本当に感謝しています。

今週土曜日にもRails勉強会に参加するので、何かしら予習ができたらいいなと思っています。