Gobble up pudding

プログラミングの記事がメインのブログです。

MENU

GitHubで2段階認証を利用していてhttpでgit cloneできなくなった際の対処法

スポンサードリンク

f:id:fa11enprince:20180728223008j:plain 何台かマシンを所有していて、たまに使うマシンで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