【问题标题】:Git fatal: remote end hung upGit致命:远端挂断
【发布时间】:2010-12-02 09:26:37
【问题描述】:

所以我以为我终于在 Windows 上完成了所有设置......然后遇到了这个问题。

当前设置

网址:ssh://user@host:port/myapp.git

已经运行 Putty - 并且可以通过 ~/.ssh/authorized_keys 直接使用有效的 .ppk 密钥进行连接。在 Git 和 TortoiseGIT 中 - 我将两者都设置为使用“plink.exe”。

Putty 工作正常 - 没有问题 - 但是当我将该 URL 运行到 bash 时,我得到一个 git clone (url)

致命:远端意外挂断

在 cygwin bash 终端中 - 运行“ssh user@host” - 完全没有问题。

有人建议吗?

【问题讨论】:

  • 在您的 git clone 命令中添加 -v 以获取更多信息 - 那里可能有一个有用的花絮。
  • 嘿,我收到“连接被拒绝”,告诉我它与 SSH 密钥有关,但它们都匹配?
  • 它似乎找不到“.ppk”键 - 不知道如何解决这个问题?
  • 使用 pageant 预加载你的私钥,以便 git 在尝试连接时可以使用它。
  • 这实际上不是一个编程问题。

标签: windows git


【解决方案1】:

我们遇到了同样的问题,这里是我们如何解决问题的解决方案:

起初我们得到:

zajdan@cyberFuture:~$ git clone ssh://nette@19X.16X.14X.7X/~repos/erotika.git/ erotika
Initialized empty Git repository in /home/zajdan/erotika/.git/
Password: 
fatal: '/repos/erotika.git': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly
zajdan@cyberFuture:~$ 

解决方案:

zajdan@cyberFuture:~$ git clone ssh://nette@19X.16X.14X.7X/~/repos/erotika.git/ erotika

在波浪号之后必须有一个斜线

【讨论】:

    【解决方案2】:

    我发现使用 Git 包中的 ssh.exe 每次都有效,而不是 cygwin 附带的 ssh(默认)。 使用这个导出的变量似乎有帮助;它速度较慢(2 倍或更多),但更稳定。将其作为另一种解决方法。

    $ export GIT_SSH=/cygdrive/c/Program\ Files/Git/bin/ssh.exe

    仅供参考: 这个版本的 Msysgit 带有 OpenSSH 4.6p1、OpenSSL 0.9.8e。 [作品] Cygwin 的 SSH 是 OpenSSH 5.5p1,OpenSSL 0.9.8n。 [无效]

    【讨论】:

    • 它更稳定,但后来我失去了 ssh-add 集成。如何指向 Git 的 ssh.exe 并且每次会话只需输入一次密码?
    • 尝试将 ssh*.exe 文件从 msysgit 复制到您的 cygwin bin 目录中。
    【解决方案3】:

    尝试在 URL 中使用绝对路径来回购,这对我有用。

    代替:

    git ssh://user@host:port/myapp.git
    

    写:

    git ssh://user@host:port//home/user/repo/myapp.git
    

    注意双斜线!

    【讨论】:

      【解决方案4】:

      我在 windows 下使用 plink for git 遇到了同样的问题。

      在运行 plink.exe -v xxx@host.com 时开始显示 选美正在运行。请求密钥。 选美有 1 个 SSH-2 密钥 登录为:

      而不是 选美正在运行。请求密钥。 选美有 1 个 SSH-2 密钥 使用用户“xxx”

      为了解决这个问题,我清理了腻子注册表记录和会话 putty.exe -清理

      在 plink 重新启动并再次请求信任和存储主机之后,它正在连接没有问题!

      【讨论】:

      • putty -cleanup 解决了我也遇到的这个问题(特别是让 TortoiseGit 与 GitHub 对话。)不幸的是,它确实会破坏你所有的 putty 配置,所以请谨慎使用!
      【解决方案5】:

      要更正此问题,请运行“plink -agent github.com” 当提示缓存密钥时按 y。以 git 身份登录。您将自动断开连接。而且它确实有效。

      来源:http://devlicio.us/blogs/sergio_pereira/archive/2009/05/06/git-ssh-putty-github-unfuddle-the-kitchen-sink.aspx

      【讨论】:

        【解决方案6】:

        我相信真正的问题是 cygwin 的 ssh 在 /home/name/.ssh 中寻找 .ssh 而 mingw 的 git ssh 在 c:/user/name/.ssh

        您的密钥很可能在这些目录中的一个且只有一个中。

        您可以尝试使用 -i 开关告诉 cygwin 的 .ssh 使用不同的身份文件,或者将密钥移动到两个目录中,或者在 /home/name/ 中创建一个 ssh 配置文件。 ssh/配置。

        我创建了一个配置,其中包含:

        Host github.com
            User jerryasher
            Hostname github.com
            IdentityFile c:/Users/jerry/.ssh/id_rsa
        

        鉴于我可以使用来自 git bash 的 mingw git 或来自 rxvt 的 cygwin 的 git 来与 github 交互。

        【讨论】:

          【解决方案7】:

          我在克隆 git repo 时收到消息:“remote end gung-up, unexpected EOFs, index-pack failed”,但能够使用 copssh http://sourceforge.net/projects/sereds/files/Copssh 解决此问题

          根本原因是 Cygwin openssh 包。

          我从 Cygwin 中删除了原始 openssh,安装了 copssh 并将 GIT_SSH 变量设置为指向 copssh 二进制文件。在此之后,我只是在 PATH 中添加了 copssh 二进制文件,现在我使用的是 copssh 而不是 openssh - 没有区别。

          一切正常,问题不再出现。

          另一种解决方案是使用 mSysGit 包。

          【讨论】:

            【解决方案8】:

            如果您想尝试 cygwin openssh 5.4p1-1,它似乎确实适用于此,与 5.5 或 5.6 不同,您可以使用 cygwin time machine 镜像。用-X启动setup.exe,添加镜像Url,如:

            ftp://www.fruitbat.org/pub/cygwin/circa/2010/05/20/230133
            

            注意不要从旧镜像安装太多,即基本包,而不是安装的其余部分。

            【讨论】:

              【解决方案9】:

              检查您在 CygWin 中使用的 openssh 版本。版本 5.5p1-1(这是目前最新的)给了我同样的错误。降级到 5.4p1-1 解决了这个问题。

              另一种解决方案是使用 putty/plink 代替 openssh。

              更多详情请看本帖:http://www.mail-archive.com/cygwin@cygwin.com/msg103752.html

              【讨论】:

                【解决方案10】:

                我也有同样的问题。

                我不使用 Putty(只是 Cygwin)。 我使用的是 Windows 7 Ultimate(目前已完全修补)。 我昨天刚刚安装了 Cygwin。

                我确定正在使用二进制挂载。

                如果我将一个 git repo 复制到机器上(通过 samba 挂载),我可以克隆它,但是当我在克隆之后“git diff”时,会出现一堆没有差异的“不同”文件。在“git status”之后,“git diff”没有输出。这似乎是一个换行符,但我无法弄清楚这将如何发生。 (我在 SHELLOPTS 中有 igncr,但删除它并不能解决问题。)

                我完全被难住了。

                【讨论】:

                • 顺便说一句,ssh 到 git 主机不会产生多余的输出。
                • 我认为这是 Cygwin 1.7.1 的问题。我刚刚将一台运行 Cygwin 1.5 的机器升级到了 1.7.1,现在那里的一个工作 git 以同样的方式失败了。我已经向 cygwin@cygwin.com 发布了一些内容,如果有解决方案,我会在这里报告。
                • 这是 Cygwin openssh 的问题。如果你使用 Putty 的 plink.exe,你可以解决这个问题:cygwin.com/ml/cygwin/2009-12/msg01147.html
                【解决方案11】:

                尝试以下步骤,也许会有一些提示您的问题:
                1. 运行 putty 并在设置服务器名称/用户名/密钥等之后保存这些设置。
                2. 运行 plink.exe 或 plinkw.exe 如 plink.exe user_name@server,(它会向您抛出一些信息)只是为了查看 plink 是否可以连接到服务器。
                3.再次检查 git 知道它应该使用 plink,我会说所有 VCS,这是人们最常遇到的问题,除了他们的密钥设置不正确。
                通常到现在你的大部分 ssh 问题都会暴露出来。现在只需修复它们。 :)

                更新:

                我认为您遇到的问题是由您安装的 几个 git 引起的。对于 msysgit 和 cygwin git,您需要设置 GIT_SSH 变量。这分别通过“set GIT_SSH=c:\path\putty\plink.exe”或“export GIT_SSH=/your/path/putty/putty.exe”来完成。如果您还使用 tortoise git,则需要在其菜单中找到“属性”(或者是设置?),并在那里设置 ssh 客户端。
                除此之外,在指定 git clone URL 时,请在其中使用您的登录名和服务器名称,例如'git clone ssh://user@server/your/path/repo.git 用户和服务器名称应该由 plink 使用,并且当满足所有这些要求时,plink 应该能够使用这些参数连接到服务器,一切就绪。

                祝你好运。

                【讨论】:

                • 嗨 - 感谢您的回复。如何检查 git 是否知道它应该使用 plink ?
                • btw - 好的,确实 echo $SSH_GIT 并获得了相关的正确路径。我还尝试了 plink -P portnumber user@host -i /path/to/key/ 并成功连接 - 它只是 git 无法正常工作。
                • 如果您尝试设置 GIT_SSH 而不是 SSH_GIT。
                • 嗨,抱歉,是这样设置的。我只是想不通-我可以通过putty和plink(命令行)进行连接,但不能通过GIT进行连接。每次我尝试克隆 repo 时,我都会“意外挂断失败”
                • 当我尝试通过 GIT 克隆时,是否有记录发生的事情?即以某种方式查看 plink.exe 正在做什么或?
                猜你喜欢
                • 2013-02-20
                • 1970-01-01
                • 2012-06-08
                • 2011-05-04
                • 1970-01-01
                • 1970-01-01
                • 2021-04-03
                • 2018-03-11
                相关资源
                最近更新 更多