Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

GitHubのリポジトリをcloneしようとしたら認証エラーになる時の対応

複数PCでGitHubを利用したい

複数のPCでGitHubを利用しようとしたら、ユーザー名とパスワードを求められたので入力。
正しく入力したつもりなのだが・・・なぜか認証エラーになる。

認証エラー

どうも、二段階認証が有効になってから、この症状が出ているらしい。

$ git clone https://github.com/private-organization/repository.git
Cloning into 'repository'...
Username for 'https://github.com': kamuy
Password for 'https://kamuy@github.com':   <- 入力しても何も表示されない
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/private-organization/repository.git/'

こんな感じ。

token作成

Personal access tokens 設定を実施

画面遷移が少しわかりにくかった・・・

  1. GitHubにログインする
  2. 右上の自分のアカウントアイコンをクリック
  3. Setttingsをクリック(画面切り替わる)
  4. 画面左側のメニュー下方にある「Developper settings」をクリック(画面切り替わる)
  5. 画面左側のメニュー下方にある「Personal access tokens」をクリック
  6. Classicを選択
tokensの作成

ここからもひたすらマウスクリック

  1. 「Generate new token (classic)」をクリック
  2. 「Note」欄に何かしら説明を入力(token generate)
  3. 「Expiration」で有効期限を選択 *1 ← classicでないと出てこない
  4. 「Select scopes」にあるgistまで上から全てチェックを入れる
  5. 「Generate token」をクリック(画面が切り替わる)
token画面が表示される⇐一回しか表示されないから閉じないで!!

ここで閉じてしまって、もう一度最初からやり直すハメになって辛かった・・・
なので、この画面はtokenを控えるまで閉じてはダメなのです。

画面中央付近に「ghp_xxxxxxxxx」というtokenが作成されているはず。
このtokenを必ずコピーして控えておく!

gitでcloneする

これもハマった。
tokenが複雑で手入力は不可能と思ったほうが良いです。
なぜなら・・・入力画面に何も表示されないから!

ターミナルでコマンド実行 〜 ユーザー名入力まで
$ git clone https://github.com/kamuycikapsample/kmy_samp.git
Cloning into 'repository'...
Username for 'https://github.com': kamuy     <-- ユーザー名はターミナルに表示される
Password for 'https://kamuy@github.com': 
パスワードにtokenを入力

ユーザー名入力の後、Passwordに作成したtokenを入力するのですが・・・これが結構めんどくさい。
パスワード入力は、ターミナル画面に表示されないので、正しく入力できているか否かが判断できず。
なので。。。

  1. コピーして控えたtokenをクリップボードにコピー
  2. Password入力のターミナル上で貼り付け(ターミナルによっては右クリックで貼り付け)
  3. 正しく貼り付けられていると信じてEnterキーを叩く

の手順でうまくいく確率を挙げられます。

$ git clone https://github.com/kamuycikapsample/kmy_samp.git
Cloning into 'repository'...
Username for 'https://github.com': kamuy 
Password for 'https://kamuy@github.com':    <--- 何も表示されないけれど・・・ 
remote: Enumerating objects: 65, done.
remote: Counting objects: 100% (65/65), done.
remote: Compressing objects: 100% (38/38), done.
remote: Total 65 (delta 26), reused 57 (delta 21), pack-reused 0
Unpacking objects: 100% (65/65), done.    <--- 貼り付けうまく行ったら成功する!

行けました!
tokenはあえて複雑な入力文字になっているので、コピーとかダメじゃんとか思いますが・・・思いの外手入力は至難の技です。

*1:「No Expiration」で有効期限無しかな?