何台かマシンを所有していて、たまに使うマシンでgit cloneするとユーザ名とパスワードを聞かれて、しかもパスワードを正しいのを入れても
$ git clone https://github.com/foo/private_reop_bar.git fatal: Authentication failed for 'https://github.com/foo/private_repo_bar.git
となってしまって、何故だと思ったのでメモ。
ところが一方
$ git clone git@github.com:foo/private_repo_bar.git
のsshプロトコルではうまくいきます。
ちなみに2段階認証だけでなく公開鍵認証を使っています。
公開鍵認証が失敗している
そもそも公開鍵認証が失敗している可能性もある方もいると思うのでまずはそちらを疑ってみましょう
ssh -T git@github.com Hi foo! You've successfully authenticated, but GitHub does not provide shell access.
となればOKです。
ダメな場合は次を疑ってみましょう。
GitHubに公開鍵を登録してない
複数台マシンを使っているとやりがちです。
あれ登録してなかったっけ・・・となります
秘密鍵が読めてない
秘密鍵をいくつかある場合、デフォルトの秘密鍵の名前から変えていることがあり、デフォルトでは
~/.ssh/id_rsa
です。これを~/.ssh/github_id_rsaとかに変えている場合は~/.ssh/config
ファイルに設定を書いてやらねばなりません。
パーミッションが0600になっていないケースもあります。
ssh-addしてない
Windowsマシンで起こりがちです。
Git Bashなどで
$ eval $(ssh-agent) $ ssh-add ~/.ssh/id_rsa
を~/.bashrcなどに仕込んでやりましょう
2段階認証でhttpsが使えない
本題のこちら。こちらの場合はPersonal access token
が必要なようです。
GitHubでProfileページから辿れるDeveloper Settingsの中にあるPersonal access tokensのページにてtokenを設定します。
そうすると40文字のアクセストークンが1度だけ作成時に表示されるのでそれを使いましょう。
参考情報
Githubに接続できない時の対処法 - Qiita
Githubの2段階認証を実施してgitコマンドが使えないときにやったこと - Qiita