我在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
有人可以帮我吗?
答案 0 :(得分:2)
确保在常规>标签中的常规标签的窗口>首选项:常规>网络连接> SSH2 中,包含{{1} }。
自Eclipse 2018-12起(包含JGit / EGit 5.2),您可以在 窗口>首选项:团队> Git 中尝试切换从 JSch 到 Apache MINA sshd (see this video showing it)的 SSH客户端。
答案 1 :(得分:0)
在上一发行版中,我们引入了一个基于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可以使用它。