7839

雑草魂エンジニアブログ

GitHub から Clone できない。。。Personal access tokens の活用

先日、ローカル環境での開発が終了し、早速、客先のサーバーにデプロイをしようとした際に、エラーが発生して、あれ?GitHub から Clone できない。。。となって焦ってしまった。

同僚に聞くと、即座に回答が返ってきて、そんな裏技あるの?と思ったので、備忘録として残しておく。

発生事象

構築したばかりの、とあるサーバーに SSH でアクセスして、GitHub からデータを Clone しようとした際に、以下のエラーが発生した。

$ git clone https://github.com/<--Repository URL-->
Cloning into '******'...
Username for 'https://github.com': <-- GitHub UserName -->
Password for 'https://Serip39@github.com':  <-- GitHub Password -->
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/******'

GitHubのRepositoryに関しては、Organization の Private である。

今回のエラーの原因は、GitHubのアカウントに設定している二段階認証の影響らしい。

確かに、二段階認証を設定して以降、GitHub を操作する際には、リモートの URL を HTTPS から SSH にしないと操作ができなくなったことを思い出した。ただ、客先のサーバーに、公開鍵のファイルを置くのはどうなのかと思っていたら、別の解決方法があった。

解決方法

「Personal access tokens」を用いて、「HTTPS Git 操作」を行う。

docs.github.com

Personal access tokens とは

Personal access tokens は、GitHub API またはコマンドラインを使用するときに GitHub への認証でパスワードの代わりに使用できる。

今回の場合は、コマンドラインに該当する。ただし、注意してほしいこととしては、Personal access tokens は、HTTPS Git 操作だけにしか使用できない。(SSH リモート URL の場合は、通常通り公開鍵認証を使うことになる。)

Personal access tokens の取得方法

f:id:serip39:20200920021744j:plain

  1. GitHubのSettings > Developer settings > Personal access tokens にアクセスする

  2. 「Generate new token」を選択する

  3. Tokenに名前(上の例では「HTTPS Git」としている)をつけて、アクセス許可を設定する。(HTTPS Git 操作の場合、「repo」にチェックを入れる。)

  4. Personal access token が表示されるので、コピーして保管しておく。

あとは、実際にパスワードを入力する時に、「Personal access token 」を使うだけである。

$ git clone https://github.com/<--Repository URL-->
Cloning into '******'...
Username for 'https://github.com': <-- GitHub UserName -->
Password for 'https://Serip39@github.com':  <-- Personal access token

まとめ

Personal access tokens が GitHub API で使われることは知っていたが、HTTPS Git 操作を行う際にも使われるとは知らなかった。二段階認証を設定している場合には、有効に使えると思えた。

それでは、ステキな開発ライフを。