ウェブサイト検索

HTTP(S) 認証のためにユーザー資格情報を常に要求する Git を修正する方法


リモート Git リポジトリにアクセスしたり、リモート Git リポジトリを操作するには、SSH プロトコルまたは HTTP(S) プロトコルを使用できます。前者の場合、プライベート リポジトリに関しては、パスフレーズなしで SSH キーを構成するだけで済み、ユーザー名とパスワードを入力せずにデータを安全に転送できます。

ただし、HTTP(S) では、接続するたびにユーザー名とパスワードの入力を求められます (Git が特定の URL コンテキストの認証を必要とする場合)。これは Github ユーザーがよく知っています。

この記事では、Git がHTTP(S) 経由でアクセスする際に常にユーザー認証情報を要求する問題を修正する方法を説明します。 HTTP(S) 経由でリモート リポジトリと対話するときに、Git がユーザー名とパスワードの入力を繰り返し要求しないようにするさまざまな方法について説明します。

Linux に Git をインストールする方法

システムに Git パッケージがインストールされていない場合は、Linux ディストリビューションに適切なコマンドを実行してインストールします (必要に応じて Sudo コマンドを使用します)。

sudo apt install git      [On Debian/Ubuntu]
yum install git           [On CentOS/RHEL/Fedora]
sudo zypper install git   [On OpenSuse]
sudo pacman -S git        [On Arch Linux]

リモート URL に Git ユーザー名とパスワードを入力する

前述したように、HTTP(S) 経由でリモートの Git リポジトリのクローンを作成する場合、すべての接続にユーザー名パスワードが必要です。示されているように。

Gitユーザー名パスワードを要求しないようにするには、次のように URL にログイン資格情報を入力します。


sudo git clone https://username:[email /username/repo_name.git
OR
sudo git clone https://username:[email /username/repo_name.git local_folder

この方法の主な欠点は、ユーザー名パスワードがコマンドのシェル履歴ファイルに保存されることです。

ローカル フォルダの .git/config ファイルにも保存されているため、セキュリティ上のリスクが伴います。

cat .git/config

: 2 要素認証を有効にしている Github ユーザー、またはSAML シングル サインオンを使用する組織にアクセスしている場合は、 HTTPS Git のパスワードを入力する代わりに、個人用アクセス トークンを生成して使用します (このガイドのサンプル出力を参照)。個人アクセス トークンを生成するには、Github設定 => 開発者設定 => に移動します。 個人 アクセス トークン。

リモート Git リポジトリのユーザー名とパスワードをディスクに保存する

2 番目の方法は、Git 認証情報ヘルパーを使用して、次のようにユーザー名とパスワードをディスク上のプレーン ファイルに保存することです。

git config credential.helper store				
OR
git config --global credential.helper store		

今後、Git は、初めてアクセスしたときに、URL コンテキストごとに認証情報を ~/.git-credentials ファイルに書き込みます。このファイルの内容を表示するには、次のように cat コマンドを使用します。

cat  ~/.git-credentials

同じ URL コンテキストに対する後続のコマンドの場合、Git は上記のファイルからユーザー資格情報を読み取ります。

前の方法と同様に、ユーザー資格情報をGitに渡すこの方法も、ストレージ ファイルが暗号化されておらず、標準のファイル システム アクセス許可によってのみ保護されているため、安全ではありません。

以下で説明する 3 番目の方法は、より安全であると考えられています。

リモート Git リポジトリのユーザー名とパスワードをメモリにキャッシュする

最後になりましたが、Git 認証情報ヘルパーを使用して、認証情報を一時的にメモリにしばらく保存することもできます。これを行うには、次のコマンドを発行します。

git config credential.helper cache
OR
git config --global credential.helper cache

上記のコマンドを実行した後、リモートのプライベート リポジトリに初めてアクセスしようとすると、Git はユーザー名とパスワードを要求し、それをメモリにしばらく保存します。

デフォルトのキャッシュ時間は 900 秒 (または 15 分) で、その後、Git はユーザー名とパスワードを再度入力するよう求めます。次のように変更できます (1800 秒=30 分、または 3600 秒=1 時間)。

git config --global credential.helper 'cache --timeout=18000'
OR
git config --global credential.helper 'cache --timeout=36000'

Git と認証情報ヘルパーの詳細については、マニュアル ページを参照してください。

man git
man git-credential-cache
man git-credential-store

このガイドは役に立ちましたか?以下のフィードバック フォームからお知らせください。このトピックに関する質問や意見を共有することもできます。