Herokuの鍵関係についてのメモです。Heroku Toolbeltはインストール済みの前提。

鍵の生成と登録

まず鍵ペアを生成します。
$ ssh-keygen -t rsa -C "メールアドレス"
herokuにアクセスするときに、この鍵を使うように設定します。
~/.ssh/config
このconfigに以下の内容を追加します。IdentityFileには先ほど生成した秘密鍵のパスを設定して下さい。
Host heroku
  User git
  HostName heroku.com
  IdentityFile    ~/.ssh/id_rsa
  Port 22
  TCPKeepAlive yes
  IdentitiesOnly yes
herokuにログインし、使う鍵を登録します。
$ heroku login
鍵を登録し直す場合は以下のコマンドで指定します。
heroku keys:add [.pubファイルのパス]

どうしても失敗する場合

鍵の生成をやり直しても以下のように認証が通らなくなりました。
$ git push heroku master
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
解決方法がわからず、やり直した方が速そうです。登録されている全部の鍵を消します。
$ heroku keys:clear
Removing all SSH keys... done
この方法で鍵がリセットされるので、最初からやり直しができます。

その他公開鍵以外で見直すポイントは、git remoteの向き先です。
gif config --list
を確認し、remote.heroku.urlの値が正しいアプリ名に対応しているか調べます。異なっていた場合はgit remote rm herokuしてremoteの登録を一度削除し、git remote add heroku git@heroku.com:[アプリ名].gitコマンドで登録し直します。

資料

・heroku help keys コマンドの出力結果
Managing Your SSH Keys | Heroku Dev Center
Getting Started with Heroku | Heroku Dev Center