Gerrit克隆使用apache2后面的http

时间:2017-11-02 09:15:26

标签: git apache2 gerrit

我们安装了Gerrit来管理服务器上的存储库。 到目前为止,一切运行良好,我们可以使用ssh进行克隆。

Gerrit是版本2.14.2 apache 2.4.18。

这是我们的配置文件(需要时审查):

/media/data/gerrit/etc/gerrit.config

[gerrit]
    basePath = git
    serverId = ed5a7ef7-289e-4590-9292-cbdede1b0dc9
    canonicalWebUrl = http://repository.something.com/gerrit
[database]
    type = h2
    database = /media/data/gerrit/db/ReviewDB
[index]
    type = LUCENE
[auth]
    type = HTTP
    logoutUrl = http://logout@repository.something.com/gerrit
[receive]
    enableSignedPush = false
[sendemail]
    smtpServer = mail.something.com
    from = Code Review <review@gerrit.com>
[container]
    javaHome = /usr/lib/jvm/java-8-openjdk-amd64/jre
    user = administrator
[sshd]
    listenAddress = *:29418
[httpd]
    listenUrl = proxy-http://127.0.0.1:8081/gerrit
[cache]
    directory = cache
[plugins]
    allowRemoteAdmin = true
[download]
    command = checkout
    command = cherry_pick
    command = pull
    scheme = ssh
    scheme = http
[commitmessage]
    maxSubjectLength = 80
    maxLineLength = 100
    longLinesThreshold = 10
    rejectTooLong = false
[plugin "emoticons"]
    showEmoticons = true
[reviewers]
    enableREST = true
    enableUI = true
    ignoreDrafts = true
    autoAddReviewers = false
    maxReviewers = 1
    enableLoadBalancing = false
    plusTwoRequired = true
    plusTwoAge = 8
    plusTwoLimit = 10
[gitweb]
    type = custom
    linkname = log
    url = http://repository.something.com/cgit
    project = /${project}.git
    branch = /${project}.git/log
    revision = /${project}.git/commit/?id=${commit}
    filehistory = /${project}.git/log
[lfs]
    plugin = lfs

/etc/apache2/mods-enable/gerrit.conf

ProxyPassMatch /([[:alnum:]-]+)\.git(.*) http://localhost:8081/gerrit/a/$1.git$2
ProxyPass           /gerrit  http://localhost:8081/gerrit nocanon
ProxyPassReverse    /gerrit  http://localhost:8081/gerrit nocanon
ProxyRequests       Off

<Proxy http://localhost:8081/gerrit>
  Order deny,allow
  Allow from all
</Proxy>

<Location /gerrit>
  AuthType Digest
  AuthName "gerrit"
  AuthUserFile /etc/apache2/.htdigest
  Require valid-user
</Location>

像我说的那样使用ssh克隆效果很好。但是当尝试使用http进行克隆时,我们会收到身份验证错误。 我在启用了mods的单独配置文件中尝试了不同的设置,也在可用的站点中尝试了。

知道可能出现什么问题吗?

如前所述,我们在repository.someting.com上有一个登录页面,并使用repository.something.com/gerrit访问Gerrit。

所有这些apache配置对我来说都是全新的 - 所以我不知道我到底做了什么^^

1 个答案:

答案 0 :(得分:0)

我将apache loglevel更改为debug以获取更多信息。

这些是我的尝试:

  1. 在全局.gitconfig

    中使用TortoiseGit进行克隆而不进行任何修改

    AH01781:客户端使用了错误的身份验证方案`Basic':/ gerrit / a / PluginTester / info / refs

  2. 在全局.gitconfig

    中使用GitBash进行克隆而不进行任何修改

    AH01794:用户hanswurst:密码不匹配:/ gerrit / a / PluginTester / info / refs

  3. 我在.gitconfig中添加了http.proxyAuthMethod = digest,并再次尝试使用TortoiseGit

    AH01781:客户端使用了错误的身份验证方案`Basic':/ gerrit / a / PluginTester / info / refs

  4. 还尝试了Git Bash

    AH01794:用户blubb:密码不匹配:/ gerrit / a / PluginTester / info / refs

  5. 我在文档中已经读过,只有在使用带有用户名的代理时才能使用它;所以我添加了http.proxy = http://blubb@repository.something.com:80并再次尝试使用Tortoisegit

    AH02422:HTTP请求线; URI不得包含用户名/密码

  6. 和GitBash

    AH02422:HTTP请求线; URI不得包含用户名/密码

  7. 即使文档说代理必须包含用户名, 我也试过http.proxy =上的代理 http://repository.something.com:80现在使用TortoiseGit

    AH01781:客户端使用了错误的身份验证方案`Basic':/ gerrit / a / PluginTester / info / refs

  8. 和GitBash

    • AH01626:Require valid-user:denied(尚未认证的用户)
    • 的授权结果
    • AH01626:授权结果:拒绝(尚未通过身份验证的用户)
    • AH01626:Require valid-user:granted
    • 的授权结果
    • AH01626:授权结果:已授予
    • AH01143:运行方案http处理程序(尝试0)
    • AH00942:HTTP:已获取(localhost)的连接 将http://localhost:8081/gerrit/a/PluginTester/info/refs?service=git-upload-pack连接到localhost:8081 connected / gerrit / a / PluginTester / info / refs?service = git-upload-pack to localhost:8081
    • AH00943:http:已发布(localhost)
    • 的连接
  9. 第7点是我的预期,因为摘要将不再使用。 但是在服务器上的8.它看起来对我很好,但客户端仍然得到“身份验证失败”