ページ

2014/05/13

[Git][GitHub]GitHubにPushする際に認証失敗する

GitHub で2段階認証の設定をしてから push 時に認証が失敗するようになりました。
いつもどおり以下のコマンドを実行すると ID/PW を聞かれます。
git push origin master
Username for 'https://github.com':
Password for 'https://github.com':
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/wada811/AndroidLibrary-wada811.git/'
[Git][GitHub]やっておくと地味に便利なこと2つ | DevAchieve で .netrc に ID/PW を書いているので
聞かれるのはおかしいなぁと思いながら ID/PW を入力しますが上記のようにエラーになってしまいます。

調べてみると Git over HTTPS では Personal access token をパスワードの代わりに使えって言っています。
Two-factor Authentication
How does it work for command-line Git?

If you are using SSH for Git authentication, rest easy: you don't need to do
anything. If you are using HTTPS Git, instead of entering your password, enter
a personal access token. These can be created by going to your
application settings page.

実際に push 時にパスワードではなくアクセストークンを入力してみると問題なく push することができます。

アクセストークンの入力はめんどくさい

ssh プロトコルで push するように変更する

% git remote set-url origin git@github.com:wada811/AndroidLibrary-wada811.git
% git remote -v 
origin  git@github.com:wada811/AndroidLibrary-wada811.git (fetch)
origin  git@github.com:wada811/AndroidLibrary-wada811.git (push)
参考: Githubの2段階認証を有効にしてgitからの認証が弾かれる時の話 - 頼りないニモニック

.netrc に ID と Personal access token を書いておく

machine github.com
login wada811
password xxxpersonalaccesstokenxxx
コレが一番楽な解決方法ですね。
コレにて一件落着。