Gitの認証情報

Gitのリポジトリには、アクセス制限をつけることができます。

例えば、SSHの公開鍵で認証されたユーザーしかアクセスできないようにするなどがあります。

ここでは、このような認証の内、http://やhttps://で始まるようなHTTPによるリポジトリのアクセスについて、毎回認証情報を書かなくて済むやり方について紹介します。

何度も認証

HTTPによるリポジトリのアクセスに制限がある場合、基本的にはアクセスのたびに、ユーザー名やパスワードを入力する必要があります。

これは、あまりにも面倒です。

このような状況を回避する方法としては、SSH公開鍵による認証などがあるのですが、こちらは環境によっては使えないということがあります。

そこで、ここでは毎回の認証を回避する方法として3つ紹介します。

URLへの記述

ひとつめに紹介する方法は、URLに直接認証情報を書き込むという方法です。

例えば次のように記述します。

$ git remote add origin https://ユーザー名:パスワード@example.com/*****/*****.git

http://やhttps://の後に、:(コロン)で区切ってユーザー名とパスワードを記述し、その後に@をつけます。

この方法では、利用者以外のローカルのリポジトリにアクセスできるユーザーがいた場合、簡単にユーザー名やパスワードが見られてしまうため、推奨できません。

しかし、一番手軽にできる方法でもあるため、なるべく使わないようにしつつも、こちらの方で大丈夫というような場合の時にのみ使うようにしましょう。

キャッシュの利用

ふたつめに認証情報をキャッシュに入れておくという方法を紹介します。

これは、Gitに標準で搭載されている機能で、メモリ上に情報が記録されます。

欠点としては、デフォルトで15分までしか情報を保存していないため、一度認証情報を入力してから15分を超えてしまうと、もう一度認証情報を入力しなおさなければなりません。

この機能を使う場合は、次のようにGitの設定を変更します

$ git config --global credential.helper cache

あくまでもデータがキャッシュされているだけなので、長時間にわたって作業をするときには不便ですが、短時間に何度も操作をする場合などにはいいのではないかと思います。

ソフトの利用

認証情報を、安全な別のソフト上に保存しておき必要な時だけ参照するという方法があります。

この方法は、WindowsやmacOSで使用することができ、Linuxでは使用できません。

私は、WindowsやmacOSを使用している場合は、この方法をお勧めします。

Windowsの場合は、wincredというソフトを使用します。

wincredは、次のようにして設定をするだけで使えるようになります。

$ git config --global credential.helper wincred

macOSの場合は、次のようにしてOS標準のキーチェーンに情報を保存するようにできます。

$ git config --global credential.helper osxkeychain

このような操作は一度するだけで十分です。また、一度でも認証情報を入力した場合、保存された情報が再利用されるため、毎回認証情報を入力する必要はありません。

さいごに

Gitで認証情報を省略する方法は、WindowsやmacOSであれば、最後に紹介した方法がおすすめです。

また、HTTPによるリポジトリへのアクセスよりも、SSHの公開鍵を使う方が、認証周りでは楽なので、もし使えるならば公開鍵を使う方がおすすめです。

しかし、Linuxを使用している場合は、情報を長期間保存しておくような便利なソフトがないため、諦めてキャッシュを使う方法をおすすめします。