Netbeans 使用 SSH 密钥访问 GitHub 失败

4

我的最新版Netbeans(NetBeans IDE 7.3(Build 201302132200))似乎完全失灵了,当我尝试使用SSH访问自己的GitHub存储库时。使用HTTP URL时没有问题。

由于我导入了一个已存在的GitHub存储库的本地副本(新建>具有现有源代码的PHP项目),曾经使用TortoiseGit创建过,因此在本地副本元数据中保存了远程设置(可能在.git文件夹中)。因此,Netbeans在Push到远程仓库窗口中提供了Select Configured Git Repository Location选项。但是未成功。

尝试以下操作:

  1. 当我使用SSH URL(git@github.com:user/reponame.git)和Password选项,使用帐户密码时,Netbeans会尝试连接GitHub(远程),并在约5秒钟后抛出错误Cannot connect to the remote repository at git@github.com:user/reponame.git

  2. 使用SSH URL和Private/Public Key选项时,Netbeans立即抛出完全相同的错误,因此我认为由于某种原因它甚至不会尝试连接GitHub。

更奇怪的是,Netbeans没有要求输入私钥密码。我已经设置了它,但故意没有输入Netbeans来测试连接过程。我非常确定Netbeans会要求我提供此密码,因为它不应该能够在没有密码的情况下使用私钥。出乎意料的是,它没有要求输入密码,而是显示错误,表示无法连接GitHub。当然,那只是一个测试。输入正确的密码后,我得到完全相同的效果。

我直接从GitHub网站复制了我的存储库URL,没有进行任何修改。似乎我只能使用HTTP URL(https://github.com/user/reponame.git)。这可以正常工作,并确保所有项目(URL、用户、reponame、密码,最终互联网连接)都没问题。但是,似乎Netbeans在SSH URL上完全失败。

无论我在Push到远程仓库窗口中选择Select Configured Git Repository Location还是Specify Git Repository Location,上述情况始终发生。无论我做什么,我都无法通过Netbeans的SSH访问存储库,使用HTTP是唯一的选项。

我使用 puttygen.exePuTTY官网 创建了我的私钥公钥对。我将私钥保存在Netbeans安装目录中,并将公钥添加到GitHub的SSH设置页面。我使用了我通常在TortoiseGit中使用的分步指南。

我不知道还有什么遗漏或者是我做错了什么?有什么想法吗?


1
我在2020年使用Netbeans 12时遇到了相同的问题! - DavidHyogo
3个回答

3

记录一下: 使用PuTTYgen生成密钥时,建议将其导出为OpenSSH密钥以确保兼容性。这可以通过访问转换 > 导出OpenSSH密钥菜单来实现。


2
经过一系列的测试,我发现Netbeans有以下问题:
  1. 不能很好地与已存在的本地GitHub(或任何其他git)远程存储库配合使用。

  2. 不能与由puttygen生成的SSH密钥配合使用。

对于第一个问题,我不得不删除用TortoiseGit克隆的整个文件夹,并使用Netbeans捆绑的工具(Team > Git > Clone)克隆相同的存储库。Subversion也是如此(请看这里)--因此,经验法则是,当您从另一个Git或SVN客户端切换到Netbeans时,应该对远程存储库进行完整的、干净的克隆(或检出),尝试重用现有副本的尝试很可能会失败。
关于第二个问题,请按照这篇GitHub文章中给出的指示使用ssh-keygen(在Windows系统中可以使用本地安装的Git for Windows,或者从其他来源获取),而不是puttygen。由puttygen生成的SSH密钥无法用于在Netbeans中设置与GitHub的无密码登录。
正如我所写的,我之前一直在使用TortoiseGit,它接受并能够很好地使用puttygen密钥,因此对我来说,问题的根源并不明显。
在解决了这两个问题(获取干净的克隆和生成正确的密钥)之后,我在我的问题中表达的所有问题都消失了,Netbeans与GitHub存储库的工作非常顺畅。

1

我的解决方案是使用ssh-keygen和PEM选项:

ssh-keygen -t rsa -b 4096 -m PEM -C my@mail.xy

Netbeans 12使用JGit作为Git工具,它只支持特殊类型的SSH密钥?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接