Git で安全に認証を行う:SSH キー vs 資格情報マネージャー
git credential-cache
コマンドは、Git がリモートリポジトリへのアクセスを認証するために使用する 資格情報 を管理するためのツールです。このコマンドを使用すると、ユーザー名とパスワードを安全に保存し、毎回入力する必要をなくすことができます。
3つのモード
git credential-cache
には、資格情報を保存する方法を制御する 3 つのモードがあります。
- cache
デフォルトモード。認証情報はメモリにキャッシュされ、次回の Git 操作まで保存されます。コンピュータを再起動すると消去されます。 - store
認証情報はgit-credentials
ファイルに暗号化されて保存されます。このファイルはデフォルトで~/.git-credentials
にあります。 - osxkeychain
(macOS のみ) 認証情報は macOS のキーチェーンに保存されます。
それぞれのモードの利点と欠点
- osxkeychain
他のモードよりも使いやすい場合がありますが、macOS のみで使用できます。 - store
資格情報は暗号化されて保存されるため、cache モードよりも安全です。ただし、ファイルを手動で編集する必要があるため、管理が少し複雑になります。 - cache
最も安全なモードではありませんが、最も使いやすいモードです。
どのモードを選択すべきか?
一般的には、cache モード をお勧めします。これは、使いやすく、セキュリティも比較的良好です。ただし、機密性の高い情報にアクセスする場合は、store モード または osxkeychain モード を検討する必要があります。
git credential-cache
コマンドの使用例
以下の例では、cache モード
で GitHub リポジトリへの認証情報を保存する方法を示します。
git credential-cache store https://github.com
このコマンドを実行すると、Git はユーザー名とパスワード入力を求め、それらを安全に保存します。次回からそのリポジトリにアクセスするときは、資格情報を入力する必要はありません。
git credential-cache
コマンドの詳細については、Git リファレンスドキュメントを参照してください:
- Windows ユーザーは、資格情報マネージャーを使用して Git 資格情報を保存することもできます。
- 資格情報は暗号化されていますが、完全に安全とは限りません。機密性の高い情報にアクセスする場合は、追加のセキュリティ対策を検討してください。
git credential-cache
コマンドは、Git 2.1 以降で使用できます。
GitHub リポジトリへの認証情報を cache モード で保存する
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 がリモートリポジトリへのアクセスを認証するために使用する資格情報を管理するための便利なツールですが、代替手段もいくつか存在します。それぞれの方法には長所と短所があるため、自分のニーズに合ったものを選択することが重要です。
代替手段
環境変数
環境変数を使用して、ユーザー名とパスワードを保存することができます。これは、最も簡単な方法ですが、セキュリティ上最も危険な方法でもあります。環境変数は誰でも簡単にアクセスできるため、資格情報が漏洩するリスクが高くなります。
export GIT_CREDENTIAL_USERNAME="my_username" export GIT_CREDENTIAL_PASSWORD="my_password"
Netrc ファイル
Netrc ファイルは、ユーザー名とパスワードをプレーンテキストで保存するファイルです。このファイルは、
~/.netrc
または~/.git-netrc
に配置する必要があります。Netrc ファイルは、環境変数よりも安全ですが、依然として比較的脆弱です。machine github.com login my_username password my_password
SSH キー
SSH キーを使用して、リモートリポジトリへの認証を行うことができます。これは、最も安全な方法ですが、セットアップが少し複雑です。SSH キーを使用するには、まず、公開鍵と秘密鍵のペアを生成する必要があります。次に、公開鍵をリモートリポジトリのサーバーに追加し、秘密鍵をローカルコンピューターに保存する必要があります。
サードパーティ製の認証マネージャー
1Password や LastPass などのサードパーティ製の認証マネージャーを使用して、Git 資格情報を保存することができます。これらは、環境変数、Netrc ファイル、SSH キーよりも安全で使いやすいことが多いです。
Git Credential Helper
Git Credential Helper は、資格情報を管理するためのカスタム プログラムです。これらは、環境変数、Netrc ファイル、SSH キー、サードパーティ製の認証マネージャーなど、さまざまな方法で資格情報を保存することができます。Git Credential Helper は、柔軟性と制御性が必要な場合に役立ちます。
それぞれの方法の比較
方法 | 長所 | 短所 |
---|---|---|
環境変数 | 簡単 | 最も危険 |
Netrc ファイル | 環境変数よりも安全 | 依然として脆弱 |
SSH キー | 最も安全 | セットアップが複雑 |
サードパーティ製の認証マネージャー | 安全で使いやすい | サードパーティ製のサービスに依存する |
Git Credential Helper | 柔軟性と制御性 | セットアップと管理が複雑 |