web-dev-qa-db-ja.com

git Push overhttpの認証

私は、pro gitブックとそのマンページの指示に従って、git-http-backendを使用するようにApacheを設定しました。私のApache設定は次のようになります:

SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
<LocationMatch "^/git/.*/git-receive-pack$">
AuthType Basic
AuthName "Git Access"
Require group committers
</LocationMatch>

git clone http: //user@url/git/repo.gitを使用してリポジトリのクローンを作成できます
「user」のパスワードの入力を求められ、続行します。ただし、プッシュしようとすると、パスワードの入力を2回求められ、エラーが発生します。

Cannot access URL http: //user@url/git/repo.git/, return code 22

(スパム防止メカニズムでは他の方法で投稿できないため、URLにスペースを挿入しました)

Apacheログを見ると、次のことがわかります。
192.168.1.151 - - [12/Sep/2010:20:11:22 +0100] "GET /git/repo.git/info/refs?service=git-receive-pack HTTP/1.1" 403 - "-" "git/1.7.2.3"
192.168.1.151 - - [12/Sep/2010:20:11:23 +0100] "GET /git/repo.git/info/refs HTTP/1.1" 200 59 "-" "git/1.7.2.3"
192.168.1.151 - - [12/Sep/2010:20:11:23 +0100] "GET /git/repo.git/HEAD HTTP/1.1" 200 23 "-" "git/1.7.2.3"
192.168.1.151 - - [12/Sep/2010:20:11:26 +0100] "PROPFIND /git/repo.git/ HTTP/1.1" 404 - "-" "git/1.7.2.3"

サーバーの「committers」グループに「user」を追加しました(指示に従うのが最も簡単なようです)。ローカルの.netrc(chmodded 600)は次のようになります。

machine address
login user
password pass

私が見つけたすべての指示は、問題のdirに対してDAVを有効にする必要があるかどうかについて少し不明確に思えます(ただし、それは古い方法だと思いました)。私できたただジトライトを使うが、最初にこれの底に行きたい…

3
urschrei

PROPFINDは、非標準のwebdavHTTPメソッドです。
リポジトリの場所に対してwebdavを有効にする必要があります。 httpd.confでmod_davを有効にし、これをvhostLocationMatchブロックに追加します。

<LocationMatch "^/git/.*/git-receive-pack$">
  #...
  Dav on
</LocationMatch>

次に、Apacheユーザーがリポジトリへの書き込みアクセス権を持っていることを確認します。

2
KevBurnsJr

Apacheログで重要なのは、次の行です。

  192.168.1.151 - - [12/Sep/2010:20:11:22 +0100] "GET /git/repo.git/info/refs?service=git-receive-pack HTTP/1.1" 403 - "-" "git/1.7.2.3"

クライアントがgit-receive-packメソッドの使用を要求すると、git-http-backendは403/Forbiddenコードを返します。その後、WebDAVにフォールバックしますが、WebDAVの使用は必要ありません必要ありません

私も同じ問題を抱えていました。私の場合、これはREMOTE_USERが設定されていないことが原因でした。私の場合、REDIRECT_REMOTE_USER/was /が設定されていたので、REMOTE_USERをREDIRECT_REMOTE_USERに設定しました。これで、問題は解決しました。

blog -にセットアップを文書化し、それが機能するかどうかを確認します。

2
valhallasw