【发布时间】:2018-05-08 15:44:53
【问题描述】:
每次我尝试从我们的远程 gogs 存储库中使用 TortoiseGit 克隆任何存储库时,我都会得到 401(未经授权)。
使用http://user:pw@ex.ample.com/user/repo.git 作为结帐网址也不起作用。
ssh 不是一个选项。在禁用 http auth 的情况下一切正常。
简化的 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 身份验证?
编辑:似乎只影响私人回购,公共回购是可访问的。
Edit2:在 http auth 之后也无法推送到公共仓库。
解决方案:带有反向代理的https 行为异常,因此 repo url 和 push url 必须与纯 http 一起使用。可能这里需要一些 nginx tweeking。
【问题讨论】:
-
您到底在使用哪些 URL?
user:pw@ex.ample.com/user/repo.git不起作用,但是,http(s)://user:pw@ex.ample.com/user/repo.git可以工作。尽管如此,TortoiseGit 还是会在需要时要求您提供用户名和密码。 -
是的,http 主机在 url 前面。 TortoiseGit 确实要求我提供姓名和密码,但只要求一个。它没有按预期要求我要 2。 (http auth 和 git 帐户)
-
只是添加,在 URL 中使用 user:pw 它根本不要求我提供任何凭据。
-
为什么你认为它应该要求输入 2 个密码?那没有意义。我假设你是通过一个愚蠢的 http 传输来提供这个服务的?如果是这样,则需要允许 Web 服务器修改 git repo。
-
http://localhost:3000/是否也要求用户名和密码?如果是这样,您只能为您的 nginx 端点或后端 git 端点获取一个用户名和密码,否则您需要在您的 nginx 配置中提供授权,我相信
标签: git authentication nginx tortoisegit gogs