要件、特にセキュリティのニーズに応じて、いくつかのオプションがあります。 HTTP と SSH の両方で、パスワードなしのアクセス、またはパスワードが必要なアクセスがあります。
HTTP
==============
パスワードなし
フェッチのみの要件に役立ちます。デフォルトでは、プッシュは無効になっています。匿名のクローン作成が意図されている場合に最適です。このタイプの構成では、プッシュを有効にしないでください。 git-http-backend のマニュアル ページには、適切な情報が含まれています。オンライン コピーは http://www.kernel.org/pub/software/scm/git/docs/git-http-backend.html にあります。これを提供するために apache を構成する方法の例を提供します。
.netrc または埋め込まれた URL のユーザー/パスワード
.netrc ファイルが次の形式で使用されている場所:
machine <hostname> login <username> password <password>
埋め込まれた URL は次の形式になります:
http://user:[email protected]/repo
git は認証を行わないため、要求を git ツールに渡す前に、認証を実行するように apache などの Web サーバーを構成する必要があります。また、要求されている URL の一部であるため、https を使用する場合でも、埋め込みメソッドを使用するとセキュリティ上のリスクがあることに注意してください。
非インタラクティブにプルできるようにしたいが、匿名ユーザーが git リポジトリにアクセスできないようにしたい場合、基本認証に apache を使用し、資格情報を保存するために .netrc ファイルを使用することをお勧めします。ちょっとした落とし穴として、認証が使用されると git は書き込みアクセスを有効にするので、読み取り専用に匿名の http を使用するか、非対話型ユーザーが書き込みアクセスできないようにする場合は、追加の構成を実行する必要があります。 .
参照:
- 基本認証の設定の詳細については、httpd.apache.org/docs/2.4/mod/mod_auth_basic.html
- 必要な Apache 構成の例については、www.kernel.org/pub/software/scm/git/docs/git-http-backend.html を参照してください。
SSH
==============
パスフレーズレス
ssh 秘密鍵を入手できる人なら誰でも、このユーザーとしてリモートの git リポジトリを更新できるようになるため、セキュリティ上の問題が発生する可能性があります。これを非対話的に使用したい場合は、gitolite のようなものをインストールして、ssh 秘密鍵を持つ人がリポジトリからのみプルできるようにすることを少し簡単にすることをお勧めします。更新するには別の ssh キーペアが必要です。
gitolite の詳細については、github.com/sitaramc/gitolite/ を参照してください。
stromberg.dnsalias.org/~strombrg/ssh-keys.html - パスワードのない ssh キーを作成する場合:複数の ssh キーの管理についても説明したい場合があります:www.kelvinwong.ca/2011/03/30/multiple-ssh-private-キー ID ファイル/
パスフェーズ保護
ssh-agent を使用してセッションごとにロックを解除できますが、git からのインタラクティブなフェッチにのみ役立ちます。ルートについて言及し、「git pull」の実行についてのみ話しているため、ユースケースは非対話的であるように聞こえます。これは、gitolite (github.com/sitaramc/gitolite/) と組み合わせたほうがよいかもしれません。
まとめ
==============
gitolite のようなものを使用すると、SSH タイプの設定の多くの構成が抽象化されます。追加のリポジトリがある場合や、さまざまなレベルのアクセスを指定する必要がある場合は、これをお勧めします。ロギングと監査も非常に便利です。
http 経由でプルできるようにしたいだけの場合は、git-http-backend の man ページに、必要な処理を実行するように apache を構成するのに十分な情報が含まれている必要があります。
クローン/プル用の匿名の http(s) と、フル アクセスに必要なパスフレーズで保護された ssh アクセスをいつでも組み合わせることができます。この場合、gitolite をセットアップする必要はありません。ssh 公開鍵を ~/. ssh/authorized_keys ファイル。
この質問への回答を参照してください。 HTTPS/GIT の代わりに SSH アクセスを使用し、SSH 公開鍵を介して認証する必要があります。これはローカルでも機能するはずです。