はしくれエンジニアもどきのメモ

情報系技術・哲学・デザインなどの勉強メモ・備忘録です。

Git(for Windows)にGitHub認証の設定をする(2/2)

Git(for Windows)にGitHub認証の設定をする(2/2)

前回 Git for Windows のインストールと動作確認メモ(1/2) - はしくれエンジニアもどきのメモはGit for Windowsのインストールをして動作確認した. 次により使いやすくするために認証の設定を行う. SSHを使わずにHTTPSリポジトリでも認証を省略できるようなのでそのメモ.

動作環境

HTTPSで認証を省略する設定

Github公式のセットアップページSet up Git - GitHub Docs にあるセクション「Next steps: Authenticating with GitHub from Git」 に書いてあるのでこの手順に沿って進める.

Connecting over HTTPS (recommended) If you clone with HTTPS, you can cache your GitHub password in Git using a credential helper.

Connecting over SSH If you clone with SSH, you must generate SSH keys on each computer you use to push or pull from GitHub.

どうやらSSHよりHTTPS利用のほうが推奨(recommended)になっているので,HTTPS利用でリポジトリを使っていくとして,その設定を行う.(疑問:よりセキュアという視点での推奨なのかは謎,セキュア視点だとやはりSSHなのだろうか?)

cache your GitHub password in Git のリンクに飛ぶと,設定方法が記されている.

configの中のcredential.helperwincredを設定すれば使えると書いてある.

> git config --global credential.helper wincred

ちなみに,設定できたかどうかを確認するには以下のコマンドを打ってwincredが表示されればいい.

> git config --global credential.helper
wincred

これで設定自体は完了になる. git pushなどして最初の認証でユーザ名・パスワードを入力すれば次回から入力が不要になる.

credential.helperについて

credential.helperの詳細な情報としてはProGit 2nd Edition 7.14 Git のさまざまなツール - 認証情報の保存で説明されている. 他にどんな設定ができるか引用すると,

デフォルトでは、なにもキャッシュされません。 接続するたび、ユーザー名とパスワードを尋ねられます。

“cache” モードにすると、認証情報が一定の間だけメモリーに記憶されます。 パスワードはディスクには保存されません。15分経つとメモリーから除去されます。

“store” モードにすると、認証情報がテキストファイルでディスクに保存されます。有効期限はありません。 ということは、パスワードを変更するまで、認証情報を入力しなくて済むのです。 ただし、パスワードが暗号化なしのテキストファイルでホームディレクトリに保存される、というデメリットがあります。

Mac を使っているなら、Git の “osxkeychain” モードが使えます。これを使うと、OS のキーチェーン(システムアカウントと紐づく)に認証情報がキャッシュされます。 このモードでも認証情報がディスクに保存され、有効期限切れもありません。ただし先ほどとは違い、保存内容は暗号化(HTTPS 証明書や Safari の自動入力の暗号化と同じ仕組み)されます。

Windows を使っているなら、“wincred” という補助ツールがあります。 “osxkeychain” と同じような仕組み(Windows Credential Store)で、重要な情報を管理します。

  • デフォルト:常にユーザ名とパスワードが必要
  • cache:最初にユーザ名とパスワードを入力するとタイムアウトするまで省略して利用可能.15分という時間も設定で変えられる.
  • osxkeychainMacのみ設定可能.OSのシステムアカウントに紐づけらる.
  • wincredWindowsのみ設定可能.“osxkeychain” と同じような仕組み(Windows Credential Store)でWindowsOSの「資格情報」に紐づけられる(後述).Git for Windowsインストーラ―についてくるMicrosoft製Git Credential Manager for Windows (GCM)とは別もので, Git for Windowsでインストールすればデフォで利用できるようだ.

認証情報はどこあるのか

ここで不思議なのは,認証情報はどこにあるのか. 上記でWindowsOSの「資格情報」に紐づけられると書いたように, 「資格者情報」に記録されている.

アクセス方法は,「資格情報マネージャー」を検索するか, 「コントロールパネル」> 「ユーザアカウント」>「資格情報マネージャー」を開く.

資格情報マネージャー

Windows資格情報」> 「汎用資格情報」の中のgit:https://github.com の中にユーザ名とパスワードが書かれている.

汎用資格情報

gitのcredentialの設定からも確認できる.以下のコマンドで対話モードに入り,protocolhostを以下のように入力するとwincredに設定されているcredential情報が返ってくる.

> git credential-wincred get
> (対話モード)
> host=github.com
> protocol=https
> (改行)
username=Personal Access Token
password=<アクセストークン>

ちなみGithubAPIのアクセストークンが使われているので Githubページの Setting > Developer Setting > Personal Access Token から同じアクセストークンの設定を確認できる.

GitHubのPersonal Access Token

これらが対応していれば設定できていることになる,

(疑問点):自環境ではユーザ名がPersonal Access Tokenとなっているが,検索調べてもこの文字列になっている例が出てこないのでこれが正しいのか謎.StackOverFlowあたりでは単純にGitHubのユーザ名が入るような記述がある.