Eclipse:加载SSH2私钥时发生错误

时间:2018-12-21 15:11:07

标签: eclipse ssh

我在macOS Mojave版本10.14.1上使用eclipse版本:2018-12(4.10.0)。我按照https://help.github.com/enterprise/2.9/user/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/上的说明为GitHub设置了ssh密钥。我可以在终端中“ git clone”存储库,没有问题。但是,当发生日食时,发生了异常:

org.eclipse.jgit.api.errors.TransportException: git@github.***.com:EA/entity-matching.git: invalid private key: [B@47822527
    at org.eclipse.jgit.api.LsRemoteCommand.execute(LsRemoteCommand.java:222)
    at org.eclipse.jgit.api.LsRemoteCommand.call(LsRemoteCommand.java:161)
    at org.eclipse.egit.core.op.ListRemoteOperation.run(ListRemoteOperation.java:116)
    at org.eclipse.egit.ui.internal.clone.SourceBranchPage$8.run(SourceBranchPage.java:340)
    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)
Caused by: org.eclipse.jgit.errors.TransportException: git@github.***.com:EA/entity-matching.git: invalid privatekey: [B@47822527
    at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:191)
    at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:140)
    at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:280)
    at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:170)
    at org.eclipse.jgit.api.LsRemoteCommand.execute(LsRemoteCommand.java:200)
    ... 4 more
Caused by: com.jcraft.jsch.JSchException: invalid privatekey: [B@47822527
    at com.jcraft.jsch.KeyPair.load(KeyPair.java:664)
    at com.jcraft.jsch.KeyPair.load(KeyPair.java:561)
    at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:40)
    at com.jcraft.jsch.JSch.addIdentity(JSch.java:407)
    at com.jcraft.jsch.JSch.addIdentity(JSch.java:367)
    at org.eclipse.jgit.transport.JschConfigSessionFactory.getJSch(JschConfigSessionFactory.java:399)
    at org.eclipse.egit.core.EclipseSshSessionFactory.createSession(EclipseSshSessionFactory.java:53)
    at org.eclipse.jgit.transport.JschConfigSessionFactory.createSession(JschConfigSessionFactory.java:208)
    at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:138)
    ... 8 more

我确定URI是正确的。我的〜/ .ssh / congif是

Host *
 AddKeysToAgent yes
 UseKeychain yes
 IdentityFile ~/.ssh/id_rsa

有人可以帮我吗?

3 个答案:

答案 0 :(得分:2)

确保在常规>标签中的常规标签的窗口>首选项:常规>网络连接> SSH2 中,包含{{1} }。

自Eclipse 2018-12起(包含JGit / EGit 5.2),您可以在 窗口>首选项:团队> Git 中尝试切换 JSch Apache MINA sshd see this video showing it)的 SSH客户端

答案 1 :(得分:0)

EGit 5.3.0 (Feb. 2019)

不会发生此错误

在上一发行版中,我们引入了一个基于Apache MINA sshd库的新SSH客户端,以替代基于JSch的客户端。
在EGit 5.3.0中,默认设置已切换:默认情况下,使用Apache MINA实现。

我们计划在EGit的未来版本中完全删除旧的JSch SSH实现。

答案 2 :(得分:0)

如果某人无法将其更新为Jsch(就像我在Spring Tool Suite中无法做到的那样),则可能必须使用-m PEM选项来生成新的密钥对,如下所示:

ssh-keygen -t rsa -m PEM 

因此Jsch可以使用它。

参考- http://answers.neotys.com/questions/2218589-error-configure-git-connection-neoload-using-ssh-protocol-public-private-key