如果出现以下错误,我如何推送到Git Repo:推送期间发生内部异常:ssh://git@github.com/xxx/xxx.git:会话已关闭

时间:2012-01-25 13:54:50

标签: eclipse ssh egit

我最近设置了一个github帐户来存储我一直在处理的项目的源代码。

我正在使用 egit eclipse 插件将更改推送到 github

我成功推送了初始代码和2个后续更改。然而,当我试图推动第三次改变时,我无法做到。以下例外情况出现在日食错误日志中。

如果有人能告诉我这个错误的原因,或者告诉我如何调试问题,这将是一个很大的帮助。

org.eclipse.jgit.api.errors.JGitInternalException: Exception caught during execution of push command
    at org.eclipse.jgit.api.PushCommand.call(PushCommand.java:156)
    at org.eclipse.egit.core.op.PushOperation.run(PushOperation.java:227)
    at org.eclipse.egit.ui.internal.push.PushOperationUI.execute(PushOperationUI.java:145)
    at org.eclipse.egit.ui.internal.push.PushOperationUI$1.run(PushOperationUI.java:202)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: org.eclipse.jgit.errors.TransportException: ssh://git@github.com/xxx/xxx.git: session is down
    at org.eclipse.jgit.transport.JschSession$JschProcess.<init>(JschSession.java:154)
    at org.eclipse.jgit.transport.JschSession$JschProcess.<init>(JschSession.java:118)
    at org.eclipse.jgit.transport.JschSession.exec(JschSession.java:91)
    at org.eclipse.jgit.transport.TransportGitSsh$SshPushConnection.<init>(TransportGitSsh.java:306)
    at org.eclipse.jgit.transport.TransportGitSsh.openPush(TransportGitSsh.java:152)
    at org.eclipse.jgit.transport.PushProcess.execute(PushProcess.java:130)
    at org.eclipse.jgit.transport.Transport.push(Transport.java:1120)
    at org.eclipse.jgit.api.PushCommand.call(PushCommand.java:152)
    ... 4 more
Caused by: com.jcraft.jsch.JSchException: session is down
    at com.jcraft.jsch.Session.openChannel(Session.java:750)
    at org.eclipse.jgit.transport.JschSession$JschProcess.<init>(JschSession.java:147)
    ... 11 more

7 个答案:

答案 0 :(得分:13)

我遇到了同样的问题。决议如下:

  • 删除远程(Eclipse view --> Git repositories)中的原始推送和提取。
  • 关闭Eclipse。
  • 转到.ssh文件夹(用户/ .ssh)并删除密钥文件(公开私有)。
  • 启动eclipse并重新生成密钥(Window --> Preferences --> General tab --> Network connections --> SSH2)。
  • 复制密钥并将其添加到github/SSH密钥
  • 在Eclipse中添加新远程推送

修改 您可能不需要删除所有密钥文件。如果您之前已经添加了一个密钥文件(可能在设置本机Git时),您只需在密钥列表中添加该文件的名称,它就可以使用。

答案 1 :(得分:4)

这似乎对我有用:

除了推送https://stackoverflow.com/a/9889350

之外,请做Firoz和Nishant所说的一切

在桌面上创建或编辑以下文件:

文件:〜/ .ssh / config 内容:

Host github.com
    User [your_github_username]
    Hostname github.com
    PreferredAuthentications publickey
    IdentityFile [path_to_private_key]

在项目的Eclipse Git Setup中执行以下操作:

  1. URI: git @ github.com:[repo_owner_username] / [repo_name] .git
  2. 协议:ssh
  3. 用户名: git
  4. 密码:[leave_blank]
  5. 保存并推送。
  6. 有关有用信息,请参阅此GitHub SSH帮助页面:http://help.github.com/ssh-issues/

    最初遭遇“会话失败”和“无法打开git-upload-pack”错误后,为我工作。希望它也能帮助其他所有人。

    祝你好运!

答案 2 :(得分:2)

我遇到了同样的问题,我发现了非常愚蠢的解决方案。
我采取了以下步骤:

  • 我从浏览器登录了我项目的 git repository 并且没有注销。
  • 我从 github 中将 http url 复制到项目存储库中 push pull
  • 我在 eclipse插件中粘贴 url ,同时推送代码(虽然两者都相同,但未使用已存储的代码)

我不知道为什么以及为什么但是当我遇到上述问题时,上述步骤对我有用。我不知道为什么eclipse会抛出这样的异常,为什么它会以这种方式解决。

您也可以尝试使用eclipse以外的其他方式。例如。 `TortoiseGit`或`SmartGit`等。

答案 3 :(得分:0)

我遇到了同样的问题。我通过将 JAVA_HOME 变量指向 jdk 6 来修复它。它原本指向 jdk 5

答案 4 :(得分:0)

我收到此错误消息并且当我的一位同事通过电子邮件向我发送了两个文件id_rsa和id_rsa(MS Pub doc)时,我将它们修复为C:Users \ [userID] \。ssh,并关闭下来并重新启动我的IDE。

答案 5 :(得分:0)

我对EGit有这个问题并最终解决了。不知何故,有时事情会搞砸。如果你无法通过Eclipse解决它,只需使用带有Windows的git bash转到你的“git”文件夹。使用Linux它更容易:只需打开终端即可。

出现此问题是因为用户名,密码和ssh键搞砸了。 因此,使用命令“git remote show origin”并确保原点是否为username@github.com......有时Eclipse只是将“git”作为用户名,因此请确保使用命令{{}更改它,以获得正确的用户名。 1}}。它应该自动更改eclipse中的配置。

...最佳

答案 6 :(得分:0)

我也有这个问题。

Git Bash中的以下命令在这种情况下很方便:git remote prune origin

这在损坏的分支中配置了拉/推。