4

我在 Windows 上运行 Apache Netbeans 12,我真的很难使用 SSH 连接连接到我的 github 存储库。我的强烈印象是,长期以来这一直是 Netbeans 用户的问题。 到目前为止我已经尝试过:

  • 我在用来在 Netbeans 中运行终端的 Cygwin 中安装了 openSSH。这让我可以使用 ssh-agent。
  • 我试图让 ssh-agent 运行并在我的 Git 存储库中添加与公钥匹配的相关私钥。
  • 使用 git bash 和独立的 Cygwin shell(现在我运行了 ssh-agent)克隆这个 repo 没有问题,但是 Netbeans 中的 Team->Git->Glone 向导给了我这个连接错误:

在此处输入图像描述

开发构建,但只要我记得,它就是真实的。我无法使用 NetBeans 执行任何需要 SSH 身份验证的 Git 操作:推送到 GitHub、从私有存储库中提取等。使用命令行 Git 的相同操作可以正常工作,但在 NetBeans 中我会提示输入用户名和密码,或带有密码的私钥。这在命令行中是不必要的,因为我使用 ssh-agent 来解锁我的私钥,而无需每次都输入密码;显然,NB 使用的 Git 库无法与 ssh-agent 通信,因此它失败了。

这是一种让我感到沮丧的回应(记得关于 Netbeans 7,我仍在为版本 12 苦苦挣扎):

“似乎现在自动使用 ssh-agent 起作用了;可能只是因为我在此修复之前尝试在 NetBeans 中推送/拉取的存储库而损坏。”</p>

不是,不是。我根本无法让 Netbeans 按照标准向导文档克隆 github 存储库。

  • 这是关于 Netbeans 8 的 StackOverflow 特有问题: Netbeans 8.2 Can't Verify Git Credentials? 没有明确的答案或有用的评论,但这个人与我在 SSH 连接上遇到的问题相同。
  • 这个错误报告是同样的老故事: https ://bz.apache.org/netbeans/show_bug.cgi?id=247761并包括这个想法:

John Gibson 在 GitLab CE 问题 #624 ( https://gitlab.com/gitlab-org/gitlab-ce/issues/624#note_299061 ) 上评论说他遇到了类似的错误。他解释说,他“发现服务器上所有可用的密码至少为 256 位。标准 Oracle Java 附带的加密限制为某些算法的 128 位。安装 Oracle 提供的无限强度加密包后,问题就消失了。请注意,无限强度包仅在美国合法可用。如果您在美国境外,那么我认为 OpenJDK 可以代替。

我按照他提到的链接(http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html)下载了 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7并按照下载随附的自述文件中的步骤进行操作。

  • 我尝试了这个下载并且 readme.txt 清楚地指出:

“当前版本的 JDK 不需要单独的无限制策略文件。提供它们是为了与旧版本一起使用。只有早于 7u171 的 JDK 7 更新才需要早期版本的无限策略文件。”</p>

所以,这也行不通。我完全被难住了。我必须做些什么才能让最新、最闪亮的 Netbeans 版本与 github 和 SSH 连接顺利工作?

4

5 回答 5

3

我正在使用 macOS 并且能够解决这个问题,但是事情的顺序有点棘手。

首先转到 SSH 文件夹并删除已知主机(或从中删除 GitHub 部分):

cd ~/.ssh
rm known_hosts

然后在使用 JSch 时按照“无效的私钥”中的说明更改密钥格式:

cp yourkeyfile yourkeyfile.bak
ssh-keygen -p -f yourkeyfile -m pem

然后验证它是否正常工作(yes当要求继续时输入,这将再次创建已知的主机文件):

ssh -T git@github.com

如果 NetBeans 仍在运行,请关闭它并重新启动它。

在克隆对话框中,将密钥和密码字段留空。

于 2021-03-20T09:27:30.973 回答
1

我遇到了同样的问题,经过长时间的搜索,我找到了解决方法。这是关于生成私钥的方式。

检查这个

于 2021-02-01T10:43:15.500 回答
0

尝试完全不使用Cygwin。

以简化的路径启动 Netbeans,其中仅包括:

  • 视窗
  • 爪哇
  • 吉特

那是:

set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\
set GH=C:\path\to\git
set PATH=%GH%\bin;%GH%\usr\bin;%GH%\mingw64\bin;%PATH%
set PATH=C:\path\to\java\bin;%PATH%

Git for Windows 本身包含了 OpenSSH 工作所需的一切。

于 2020-07-16T05:35:16.200 回答
0

我相信我也有类似的问题,但在 MacOS 上。对我来说,解决方案是按照此处id_rsa的建议将文件的权限更改为,这意味着所有者的只读访问权限,而其他任何人都没有访问权限。不确定如何在 Windows 上设置等效权限,但它可能会对您有所帮助。400

于 2020-10-11T10:33:47.453 回答
0

我不确定这是否有帮助,但我在使用 NetBeans 向导克隆存储库时也遇到了问题,但它们在第二天消失了,可能是因为重新启动 Windows 或重新启动 NetBeans。NetBeans 似乎也不支持您可能在 .ssh/config 中定义的任何缩写。所以你必须在这里使用长格式“user@hosturl.xx/...”。这或许可以解释为什么 git clone 命令确实可以从命令行工作,但不能在向导中工作。

于 2020-10-10T02:48:27.890 回答