git credential helperを使ってHTTP越しで認証がかかっているリポジトリにアクセスする

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(1)

認証情報を平文で保存する。

使い方

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(1)

認証情報をメモリ上に一定時間保存する

使い方

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が生成される。

広告

コメント1件

  1. ピンバック: Basic認証がかかっているリポジトリにgit・hgでアクセスする際、ユーザ名とパスワードを保存する方法 | misty-magic.h
  2. ピンバック: Developer's blog | AWSのソース管理サービスCodeCommitを使ってみる

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中