HTTP越しでリポジトリにアクセスする際、認証がかかっていると、毎回ユーザ名とパスワードを入力する必要がある。
Basic認証がかかっているリポジトリにgit・hgでアクセスする際、ユーザ名とパスワードを保存する方法 | misty-magic.h
のように.netrcを使うことで入力の手間を省くことができるが、Git 1.7.9以降であれば、credential helperを使うことで同様のことができる。
git credentialコマンドの存在確認
$ git help -a|grep credential- credential-cache credential-cache--daemon credential-store
git-credential-storeとgit-credential-cacheがあるのが確認できる。
credential-cache–daemonはgit-credential-cacheで利用される。
git-credential-store
認証情報を平文で保存する。
使い方
git-credential-storeを利用するように設定する。
git config --global credential.helper store
クローンしてみる。初回は、ユーザ名(ここではuserhoge)とパスワードを聞かれる
$ git clone https://example.jp/repos/git/sample.git Cloning into 'sample'... Username for 'https://example.jp': userhoge Password for 'https://userhoge@example.jp': *******
いったんクローンしたリポジトリを削除して、再度クローンすると次は、認証情報を聞かれずにクローンできる。
cloneが終わると、$HOME/.git-credentialsというファイルが生成される。
中身はリポジトリホスト名とユーザ名・パスワードが平文で保存されている。
$ cat ~/.git-credentials https://userhoge:********@example.jp
git-credential-cache
認証情報をメモリ上に一定時間保存する
使い方
git-credential-cacheを利用するように設定する。
git config --global credential.helper cache
デフォルトでは900秒の間、認証情報をキャッシュしている。
キャッシュ時間はオプションで変更できる。
git config credential.helper 'cache --timeout=300'
クローンしてみる。同じく初回はユーザ名・パスワードを聞かれるが、キャッシュが有効の間は再度認証情報を聞かれない。
$HOME/.git-credential-cacheディレクトリが生成され、credential-cache–daemonと通信するsocketが生成される。
“git credential helperを使ってHTTP越しで認証がかかっているリポジトリにアクセスする” への3件のフィードバック