Linux 通过HTTP协议进行身份验证的Git克隆

Linux 通过HTTP协议进行身份验证的Git克隆,linux,git,apache,centos,git-clone,Linux,Git,Apache,Centos,Git Clone,我有一个centos 7服务器,它通过智能http共享git repo,当我使用“git push”时,身份验证工作,但当我使用“git clone”时,身份验证不工作。我希望Git和Apache询问我克隆repo的用户和密码 /var/www/git->是我的回购目录 /var/www/html->是网站目录 我的site.conf是: <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName miserver.co

我有一个centos 7服务器,它通过智能http共享git repo,当我使用“git push”时,身份验证工作,但当我使用“git clone”时,身份验证不工作。我希望Git和Apache询问我克隆repo的用户和密码

/var/www/git->是我的回购目录 /var/www/html->是网站目录

我的site.conf是:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName miserver.com
DocumentRoot /var/www/html

SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git /usr/libexec/git-core/git-http-backend/

<Directory /var/www/html/gitweb>
    Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
    AllowOverride All
    order allow,deny
    Allow from all
    AddHandler cgi-script cgi
    DirectoryIndex gitweb.cgi
</Directory>

<Directory /var/www/git>
    DAV On
    Options ExecCGI FollowSymLinks Indexes
    AuthType Basic
    AuthName "git repository"
    AuthUserFile /var/www/git/.htpasswd
</Directory>

<Files "git-http-backend">
    AuthType Basic
    AuthName "Git Access"
    AuthUserFile /var/www/git/.htpasswd
    Require expr !(%{QUERY_STRING} -strmatch '*service=git-receive-pack*' || %{REQUEST_URI} =~ m#/git-receive-pack$#)
    Require valid-user
</Files>

ErrorLog /var/www/html/error.log
CustomLog /var/www/html/access.log combined

服务器管理员webmaster@localhost
服务器名miserver.com
DocumentRoot/var/www/html
SetEnv GIT_PROJECT_ROOT/var/www/GIT
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias/git/usr/libexec/git-core/git-http后端/
选项+执行CGI+后续符号链接+符号链接所有者匹配
允许超越所有
命令允许,拒绝
通融
AddHandler cgi脚本cgi
目录索引gitweb.cgi
达文
选项ExecCGI FollowSymLinks索引
AuthType Basic
AuthName“git存储库”
AuthUserFile/var/www/git/.htpasswd
AuthType Basic
AuthName“Git访问”
AuthUserFile/var/www/git/.htpasswd
需要expr!({QUERY_STRING}-stratch'*service=git receive pack*'||%{REQUEST_URI}=~m#/git receive pack$#)
需要有效用户
ErrorLog/var/www/html/error.log
CustomLog/var/www/html/access.log

您的配置使用的
Require expr
git receive pack
匹配。这就是推送到服务器时使用的服务。为了使服务器需要对克隆和回迁进行身份验证,您还需要在git upload pack上匹配

解决此问题的最简单方法可能是删除
Require expr
行,因为听起来您希望服务器始终应用身份验证,而不管您执行的任务是什么。删除
Require expr
行将删除非推送操作的豁免