gitlab-shell - > git push -u origin master - >致命:远程端意外挂断

时间:2013-03-16 01:15:17

标签: git ssh gitlab

我正在使用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网络交换的更多信息?

5 个答案:

答案 0 :(得分:12)

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

我在日志中看到http重定向301.(我的代理服务器将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证书验证失败(我的证书是自动签名的,没有第三部分的autority)

所以我修改了 /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

答案 1 :(得分:5)

从版本5.4开始,您可以在 gitlab-shell / config.yml

上进行编辑
  

self_signed_cert:true

答案 2 :(得分:4)

修改gitlab-shell的config.yml以指向正确的URL为我修复它(虽然我正在使用git @ ..)

https://github.com/gitlabhq/gitlab-shell/issues/65

  

gitlab-shell的config.yml应正确指向URL。就我而言,它是http://git.domain.com:8080/

答案 3 :(得分: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

成一个文本文件。

答案 4 :(得分:0)

如果有人来这个帖子就像我在搜索错误那样..

当git无法访问gitlab webserver时,很明显错误到了。对我来说,这是我在nginx上使用的http用户身份验证。删除后,错误消失了。