:::: MENU ::::

C.a.T!

CATch a TAIL!

Japanese sub culture and tech.

coding

httpsでgitリポジトリにpushするときの認証

20140401

gitといえばssh鍵で認証するパターンが多いですが、プロキシの後ろに居たりする状況ではsshが通らなかったりしてhttpsでpush,pullしたりすることがあります。
その時面倒なのが認証。
sshの場合は、リポジトリ側にssh公開鍵を登録しておけば、基本的に認証情報を毎回入力する手間はなくなります。
じゃあ、httpsの場合は?

ちょっと前までは、.netrcファイルに認証情報を書いてました。
ただ、こいつの問題はプレーンテキストでパスワードを保存しておかないといけないこと。
これは、いただけない。

で、最近はgitクライアントがOSのキーチェーンと連携する機能が入っているんですね。
git-credential という機能。
こいつ自体はキーチェーンと連携する機能は持っていなくて、以下の2つの認証ストアにのみ対応しています。

  • git-credential-cache

プロセスに一定時間記憶させる。
プロセスに記憶しているだけなので、OS再起動したり一定時間経つと再度認証を求められる。

  • git-credential-store

ファイルに保存。
.netrcと同じでプレーンテキストで保存される。

上のストアだけだと微妙ですが、git-credentialは credentials API というAPIを通して拡張できます。
拡張として各OSのキーチェーン等に対応したモジュールがリリースされているます。

  • git-credential-osxkeychain

MacOSXのキーチェーンに記憶させる。

gnomeキーリングに記憶させる。

Windows のパスワード管理に記憶させる。

これらのストアは暗号化されますので、安全に保存、利用が可能です。
git-credential-osxkeychain は、homebrewやmacportsでgitをインストールすると一緒に入ってくるようです。

git config --global credential.helper osxkeychain

でcredential helperをセットしておけばOK。
初回はパスワードを聞かれますが、2回目以降は自動で認証されます。

git-credential-gnomekeringは、インストール作業が必要。

git clone https://github.com/shugo/git-credential-gnomekeyring.git
cd git-credential-gnomekeyring/
make
cp git-credential-gnomekeyring /path/to/bin/

credential helperへのセットはmacと一緒で、

git config --global credential.helper gnomekeyring

git-credential-winstorは、公開サイトにインストーラが用意されているので簡単ですね。
ただ、.gitconfigを勝手にいじってしまうみたいです。

これで、httpsでもsshと同じような便利さ、安全さでリポジトリアクセスできるようになりました。

まとめ

githubやbitbucketなどの有名どころのリポジトリはhttpsでのpush,pullに対応しているので結構使うシーンがあると思います。
自分も会社からsshで外に行けないので結構重宝しています。
安全なgitライフのために活用しましょう。


Leave a comment