http auth不适用于TortoiseGit

时间:2018-04-29 17:41:49

标签: git authentication nginx tortoisegit gogs

每当我尝试从我们的远程gogs repo克隆TortoiseGit的任何回购时,我都会得到401(未经授权)。

使用http://user:pw@ex.ample.com/user/repo.git作为结帐网址也不起作用。
ssh不是一个选项。一切都适用于http auth disabled。

简化的nginx配置:

server {
        listen 80;
        listen [::]:80;
        server_name ex.ample.com;
                location / {
                        auth_basic "Restricted Content";
                        auth_basic_user_file /var/www/gogs/.htpasswd;
                        proxy_pass http://localhost:3000/;
                }
}

所以我的问题是:如何配置TortoiseGit发送有效的http auth?

编辑:似乎只影响私人回购,公共回购是可以访问的 编辑2:在http auth之后不可能推进公共回购。

解决方案:使用反向代理的https表现得很奇怪,因此repo url和push url必须与plain http一起使用。可能需要一些nginx tweeking。

1 个答案:

答案 0 :(得分:2)

Git是一个“愚蠢的内容跟踪器”。它只跟踪内容,不提供或要求任何身份验证或授权。

如果您需要任何身份验证和/或授权,您需要以某种方式将其置于最佳状态。

如果你使用gog,你需要在那里配置身份验证或从你的nginx代理传递用户名(参见https://github.com/gogits/gogs/issues/165https://github.com/gogits/gogs/issues/2170https://github.com/gogits/gogs/pull/3785,...)。

对于使用http的服务器Git的其他方法,请参阅How to serve GIT through HTTP via NGINX with user/password?http://gitolite.com/gitolite/http/

旧答案:

使用基本身份验证时,只能有一个身份验证,而不是两个甚至更多。

唯一的例外是代理身份验证(http状态代码407使用不同的标头完成)。

您可以尝试通过代理凭据https://serverfault.com/q/511206/237109将您的基本身份验证凭据转发到其他服务器,或尝试在您的nginx配置中提供静态凭据。