gitlab-shell → git push -u origin master → 致命错误:远程终端意外挂断

5
我正在使用gitlab-shell管理git连接,这是我的问题:
$ git push -v -u origin master
Pushing to git@git.my-srv.fr:monProjet.git
fatal: The remote end hung up unexpectedly

# tail -f /var/log/auth.log
Mar 15 15:53:12 my-srv sshd[3133]: Accepted publickey for git from my-ip port 50790 ssh2
Mar 15 15:53:12 my-srv sshd[3133]: pam_unix(sshd:session): session opened for user git by (uid=0)
Mar 15 15:53:12 my-srv sshd[3285]: Received disconnect from my-ip: 11: disconnected by user
Mar 15 15:53:12 my-srv sshd[3133]: pam_unix(sshd:session): session closed for user git

所以大家都说是别人的错?!我如何获取更多关于git/ssh网络交流的信息呢?


ssh -vT git@git.my-srv.fr - adamdunson
请注意,这是一个长篇的程序相关的文本。您可以在此链接中查看完整版翻译:http://pastebin.com/TUsj8aSA - 1000i100
5个回答

12

我尝试过这个命令: $ ssh -vT git@git.my-srv.fr

在日志中,我看到了一个301重定向的http请求。(我的代理服务器将http重定向到https)

我在gitlab-shell配置文件/home/git/gitlab-shell/config.yml中进行了更正。

# Url to gitlab instance. Used for api calls
gitlab_url: "https://git.my-srv.fr/"
新的错误消息是 ssl 证书验证失败(我的证书是自动签名的,没有第三方授权)。所以我已经修改了 /home/git/gitlab-shell/lib/gitlab_net.rb 文件,添加了以下内容:
http.verify_mode = OpenSSL::SSL::VERIFY_NONE if (http.use_ssl?)

在这些行之间:

http.use_ssl = (url.port == 443)
http.verify_mode = OpenSSL::SSL::VERIFY_NONE if (http.use_ssl?)
request = Net::HTTP::Get.new(url.request_uri)

就像在这个 gitlab-shell 关闭的拉取请求(和问题)上所描述的一样: https://github.com/gitlabhq/gitlab-shell/pull/9

以下是原始提交内容: https://github.com/jcockhren/gitlab-shell/commit/846ee24697f386cd9fcbc4ab1a7fb8ae1ccb46ee


5
自从5.4版本以后,您可以在gitlab-shell/config.yml上进行编辑。

self_signed_cert: true

这里的“self_signed_cert”是一个布尔类型的值,表示是否使用自签名证书。

4

1
我在我的Gitlab安装中遇到了完全相同的问题。在我的情况下,这是由于SSL证书出了问题。很难发现原因是:
https://gitlab.example.com  ==> padlock shows up, everything seems OK
openssl s_client -connect   ==> Verify return code: 21 (unable to verify...

由于GitLab使用OpenSSL来验证SSL连接,当OpenSSL发生错误时,它会退出致命错误。通过将以下内容粘贴到我的服务器gitlab.example.com的“正确”证书中,问题得以解决:
ROOT-issuers-cert
Intermediate-cert
cert-for-example.com

将HTML文件合并成一个文本文件。

0

如果有人像我一样在搜索错误时来到这个帖子..

很明显,当git无法访问gitlab web服务器时会出现错误。对我来说,这是因为我在nginx上设置了http用户身份验证。删除它后,错误消失了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接