Git の git credential-cache コマンド:わかりやすい解説


Git の git credential-cache コマンド:わかりやすい解説

git credential-cache コマンドは、Git がリモートリポジトリへのアクセスを認証するために使用する 資格情報 を管理するためのツールです。このコマンドを使用すると、ユーザー名とパスワードを安全に保存し、毎回入力する必要をなくすことができます。

3つのモード

git credential-cache には、資格情報を保存する方法を制御する 3 つのモードがあります。

  1. cache: デフォルトモード。認証情報はメモリにキャッシュされ、次回の Git 操作まで保存されます。コンピュータを再起動すると消去されます。
  2. store: 認証情報は git-credentials ファイルに暗号化されて保存されます。このファイルはデフォルトで ~/.git-credentials にあります。
  3. osxkeychain: (macOS のみ) 認証情報は macOS のキーチェーンに保存されます。

それぞれのモードの利点と欠点

  • cache: 最も安全なモードではありませんが、最も使いやすいモードです。
  • store: 資格情報は暗号化されて保存されるため、cache モードよりも安全です。ただし、ファイルを手動で編集する必要があるため、管理が少し複雑になります。
  • osxkeychain: 他のモードよりも使いやすい場合がありますが、macOS のみで使用できます。

どのモードを選択すべきか?

一般的には、cache モード をお勧めします。これは、使いやすく、セキュリティも比較的良好です。ただし、機密性の高い情報にアクセスする場合は、store モード または osxkeychain モード を検討する必要があります。

git credential-cache コマンドの使用例

以下の例では、cache モード で GitHub リポジトリへの認証情報を保存する方法を示します。

git credential-cache store https://github.com

このコマンドを実行すると、Git はユーザー名とパスワード入力を求め、それらを安全に保存します。次回からそのリポジトリにアクセスするときは、資格情報を入力する必要はありません。

  • git credential-cache コマンドは、Git 2.1 以降で使用できます。
  • 資格情報は暗号化されていますが、完全に安全とは限りません。機密性の高い情報にアクセスする場合は、追加のセキュリティ対策を検討してください。
  • Windows ユーザーは、資格情報マネージャーを使用して Git 資格情報を保存することもできます。


git credential-cache store https://github.com

保存されている認証情報一覧を表示する

git credential-cache list

このコマンドを実行すると、保存されているすべての認証情報が表示されます。出力例は以下の通りです。

protocol host username
https://github.com my-username

特定のホストの認証情報を削除する

git credential-cache erase https://github.com

このコマンドを実行すると、https://github.com の認証情報が削除されます。

すべての認証情報を削除する

git credential-cache erase

このコマンドを実行すると、すべての認証情報が削除されます。

注意事項

  • 上記のコードを実行する前に、git credential-cache コマンドがシステムにインストールされていることを確認してください。


Git Credential Cache の代替手段

Git Credential Cache は、Git がリモートリポジトリへのアクセスを認証するために使用する資格情報を管理するための便利なツールですが、代替手段もいくつか存在します。それぞれの方法には長所と短所があるため、自分のニーズに合ったものを選択することが重要です。

代替手段

  1. 環境変数:

    環境変数を使用して、ユーザー名とパスワードを保存することができます。これは、最も簡単な方法ですが、セキュリティ上最も危険な方法でもあります。環境変数は誰でも簡単にアクセスできるため、資格情報が漏洩するリスクが高くなります。

    export GIT_CREDENTIAL_USERNAME="my_username"
    export GIT_CREDENTIAL_PASSWORD="my_password"
    
  2. Netrc ファイル:

    Netrc ファイルは、ユーザー名とパスワードをプレーンテキストで保存するファイルです。このファイルは、~/.netrc または ~/.git-netrc に配置する必要があります。Netrc ファイルは、環境変数よりも安全ですが、依然として比較的脆弱です。

    machine github.com
        login my_username
        password my_password
    
  3. SSH キー:

  4. サードパーティ製の認証マネージャー:

  5. Git Credential Helper:

それぞれの方法の比較

方法長所短所
環境変数簡単最も危険
Netrc ファイル環境変数よりも安全依然として脆弱
SSH キー最も安全セットアップが複雑
サードパーティ製の認証マネージャー安全で使いやすいサードパーティ製のサービスに依存する
Git Credential Helper柔軟性と制御性セットアップと管理が複雑