Heroku に git push しようとしたらユーザ名とパスワードを問われ続ける問題の解決法

Windows10 にて。

ある日、いつものように Heroku に向けて git push しようとしたら、以下のように Username と Password を問われた。

$ git push heroku master
Username for 'https://git.heroku.com':
Password for 'https://git.heroku.com':
remote: !       WARNING:
remote: !       Do not authenticate with username and password using git.
remote: !       Run `heroku login` to update your credentials, then retry the git command.
remote: !       See documentation for details: https://devcenter.heroku.com/articles/git#http-git-authentication
fatal: Authentication failed for 'https://git.heroku.com/my-app.git/'

ココで、Username と Password に何を入れても、入れなくても、上手く行かなかった。

そういえば Heroku のパスワードを変えたんだった。と思い、$ heroku login をやり直してみたが、どうも変わらず。

ググってみると、Username は空のまま、Password には heroku auth:token で取得したトークンを入力しろ、という文献がいくつか見つかったが、コレは上手く行かず。

そもそも $ heroku login した時の認証情報はどのように保持されているのかと思ったら、ユーザホームディレクトリ直下に、~/_netrc というファイルが生成されて、ココに暗号化されて記述されているようだ。

Heroku のパスワードを変更したタイミングで、この認証情報がどうにも更新できなくなったようだ。

もう少し調べてみると、この ~/_netrc (アンダースコア始まり) のファイルを ~/.netrc と、ピリオド始まりにリネームすると、このファイルが上手く作用するんだとか。

ということで、以下の手順で問題が解消した。

  1. 既存の ~/_netrc を消してしまう
  2. $ heroku login を改めて実行する (最近はブラウザが起動してソチラで認証するようになったみたい)
  3. ~/_netrc が生成されているので、~/.netrc にリネームする

コレで $ git push heroku master が成功するようになった。