Gitでリモートリポジトリへのパスワードを省略する

目次

概要

GitのリモートリポジトリにSSHではなく、HTTPやHTTPSでアクセスしている場合には、リモートリポジトリの認証のためにユーザ名とパスワードが求められることがあります。

そのため、開発中になんどもプッシュしたりプルしたりするような場合は、毎回ユーザ名とパスワードを入力する必要があり、面倒です。

そこで、ユーザ名とパスワードを入力しなくても済むようになる方法を紹介します。

方法

Gitでユーザ名とパスワードの入力を省略する方法はいくつかあります。

例えば、調べるとすぐに出てくるのが.netrcというファイルにユーザ名とパスワードを書く方法です。

しかし、この方法ではユーザ名とパスワードを平文で保存しておくので、セキュリティ的によろしくありません。

なので、この方法以外でユーザ名とパスワードの入力を省略を紹介します。

私が今回紹介する方法は、Gitの1.7.9以降のバージョンに含まれる、git-credentialという機能を使う方法です。

git-credentialは、OS別にユーザ名やパスワードの入力を省略する機能を提供しており、OS毎にあるパスワード管理機能を経由してユーザ名とパスワードの記録・参照ができるようになっています。

この設定はOS毎にパスワードマネージャが違うため、それぞれで設定する必要があるのですが、他にもOSに依存しないユーザ名とパスワードをキャッシュして入力を省略する方法があるので、それを紹介します。

最初に、キャッシュを利用した入力の省略をするために、git-credentialのプロセスを起動します。

git config --global credential.helper cache

これで、一度ユーザ名とパスワードを入力してリモートリポジトリにアクセスすれば情報がキャッシュされて、次回以降は入力しなくても済むのですが、キャッシュはデフォルトの設定では、900秒つまり15分しかキャッシュされていないので、お好みでキャッシュの時間を変えます。

変える場合は、--timeout=キャッシュする秒数というオプションを追加して、プロセスを起動するようにします。

30日キャッシュする場合はこのようなコマンドを実行します。

git config --global credential.helper 'cache --timeout=2592000'

まとめ

この設定をしておけば、毎回のパスワード入力に悩まされることがなくなります。

そもそもは、HTTPやHTTPSではなく、SSHでアクセスできるようになっていればこのようなことに悩まされることもないわけですが。