【问题标题】:Git remote end hung up unexpectedlyGit远程端意外挂断
【发布时间】:2012-05-04 20:13:30
【问题描述】:

当我尝试从我的 Windows 计算机推送时,我正在尝试在我的测试服务器上设置一个 git 存储库

git push ssh://git@server.com:/path/.git

我得到了错误

fatal: The remote end hung up unexpectedly

但是当我 ssh 进入我的服务器并尝试执行完全相同的命令时,它工作得很好。这是我的 git 设置或我的 windows 设置的问题

【问题讨论】:

  • 如何通过 SSH 连接到测试服务器?
  • putty -ssh user@server.com
  • 那是“git”的“用户”部分吗?

标签: windows git ssh


【解决方案1】:

问题可能是由多个问题引起的:

  • Git 安装在服务器上某个奇怪的位置,并且“git”用户在交互登录时(您通过 PuTTY 或其他方式手动执行此操作)获得的环境与环境不同它在以非交互方式登录时获取(git 客户端为您执行此操作)。这是因为 Unix shell 在这些情况下会读取不同的启动文件,并且当 git 使用 SSH 生成远程 git 实例时,它仍然会在服务器上生成默认(对于用户)shell。
  • 您有一个本地问题(例如,您将 Git 配置为使用 plink.exe 访问服务器,它要求您通过输入“y”或“n”来接受主机的密钥(您不能这样做) .

无论如何,请尝试以下步骤:

  1. 运行plink.exe git@server.com "git --version",看看它完全可以在服务器上运行Git。如果您不使用plink.exe,请使用随 Windows 版 Git 一起提供的 OpenSSH 随附的任何二进制文件;可能是ssh.exe
  2. 在运行 git push 之前导出 GIT_TRACE=1 并查看它是否打印出任何提示问题的信息,如下所示:

    C:\foo>GIT_TRACE=1
    C:\foo>git push ssh://git@server.com:/path/.git
    

【讨论】:

  • 感谢 GIT_TRACE 提示。我遇到了完全相同的问题,它帮助我看到了 git 发出的请求。我遇到了同样的问题,只是通过在提示符下运行以下命令来解决它: > set GIT_SSH= 其中 = 的右侧没有值。
  • @lonstar,另一个调试“技巧”是使用GIT_CURL_VERBOSE=1 生成libcurl,Git 使用它来实现使用HTTP[S] 协议访问存储库,打印出它的作用——类似将--verbose 选项传递给curl 二进制文件。例如,它可能用于跟踪身份验证问题。
【解决方案2】:

我怀疑问题在于用户 'git' 没有远程存储库的写入权限,并且您可能正在使用自己的用户名(cemurray 或类似用户名)手动连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-23
    • 2013-02-20
    • 1970-01-01
    • 2012-08-19
    • 2012-06-08
    • 2011-10-14
    • 2011-05-04
    相关资源
    最近更新 更多