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 で取得したトークンを入力しろ、という文献がいくつか見つかったが、コレは上手く行かず。
- 参考 : git push heroku master がエラーを吐く - Qiita
- 参考 : Herokuのチュートリアルでgit push heroku masterできずに困る - Qiita
そもそも $ heroku login した時の認証情報はどのように保持されているのかと思ったら、ユーザホームディレクトリ直下に、~/_netrc というファイルが生成されて、ココに暗号化されて記述されているようだ。
Heroku のパスワードを変更したタイミングで、この認証情報がどうにも更新できなくなったようだ。
もう少し調べてみると、この ~/_netrc (アンダースコア始まり) のファイルを ~/.netrc と、ピリオド始まりにリネームすると、このファイルが上手く作用するんだとか。
ということで、以下の手順で問題が解消した。
- 既存の
~/_netrcを消してしまう $ heroku loginを改めて実行する (最近はブラウザが起動してソチラで認証するようになったみたい)~/_netrcが生成されているので、~/.netrcにリネームする
コレで $ git push heroku master が成功するようになった。