在开始之前,让我说我已经阅读了所有其他类似主题的帖子,但没有找到解决方案。
我的远程 git 存储库 (Gitea) 托管在启用了 https 的 VPS 上,并且服务器配置了 SSL 客户端身份验证,因此它需要用户提供 SSL 客户端证书。将客户端证书导入浏览器后,可以通过网页查看 repo。
使用 Eclipse,在将 SSL 客户端身份验证添加到远程服务器之前,我成功地将项目克隆到本地 git 存储库。然后我在服务器上激活了 SSL 客户端身份验证。
当我在 Eclipse 中提交代码更改,然后git push
从命令行使用远程源时,服务器成功验证了客户端并将更改推送到远程仓库,没有问题。
但是当我尝试从 Eclipse 中推送到远程时,它会失败并显示错误“无法连接到任何存储库 - git-receive-pack 不允许”。
Eclipse 中的 git config 参数包括以下 http config:
http.sslCert=/home/tim/keys/ssl-client.full.pem
sslCertPassword=false
sslKey=/home/tim/keys/ssl-client.key
sslVerify=false
git push
由于从命令行使用这些设置可以正常工作,这证明配置是正确的。我还需要在 Eclipse 中配置什么才能使 Eclipse 成功推送?
(另请注意,尝试在 SSL 客户端身份验证活动的情况下从远程存储库中克隆或拉取会导致类似的行为 - 从命令行使用 git 可以正常工作,但不能使用 Eclipse。)
更新:nginx web 服务器提供对远程 repo 的 https 访问,nginx 日志显示如下:
"GET /TimLearning/learning.git/info/refs?service=git-receive-pack HTTP/1.1" 403 153 "-" "JGit/5.7.0.202003110725-r" "-"
当我将 URL 复制到浏览器并在其前面加上我的服务器 URL 时,浏览器会弹出标准的基本身份验证(用户名/密码)窗口。当我输入用户名/密码时,它会返回一个网页:
f285f5e7cd96a94a94caaa199cc97a7e78832e3b refs/heads/master
这是正确的反应。因此,似乎当 Eclipse 尝试推送时,它会调用 jgit 来触发 git-receive-pack 以获取上述信息,但由于 jgit 未传递所需的用户名/密码而失败。线索。我想知道如何配置 Eclipse 以将所需的凭据传递给 jgit?