如何在 2022 年将 JGit 与 GitHub 一起使用

How to use JGit with GitHub in 2022

2022 年,GitHub 已停止使用旧签名的 DSA 和 RSA。

不幸的是,JGit 使用的 JSch 没有得到任何更新,并且会 even for "good" keys, and its implementation of ECDSA/ed25519 will fail on reconnect attempt

JGit 是否可以与 GitHub 一起使用 - 我应该使用哪种配置?我说的是密钥类型、配置设置和代码调用的组合,这将导致针对 GitHub.

的可靠工作

a fork of JSch 支持现代算法,应该相当健壮。我知道至少有一个主要组织成功地使用它来对抗 GitHub。

但是请注意,它默认禁用支持 SHA-1 的 RSA,因为它不安全(这就是 GitHub 逐步淘汰它的原因),因此如果您需要使用不支持的网站支持其他任何东西(例如,目前的 Azure DevOps),您需要相应地设置一些配置。

您还可以将 Apache Mina 与 JGit 结合使用。 JGit 5.13版本支持Mina 2.7.0,应该支持现代算法。

最新的 JGit 支持 Apache MINA,可以毫无问题地使用 ECDSA 密钥。

请注意 JGit 6.x 是为 Java 11+ 构建的。使用以下 Maven 工件:

        <dependency>
            <groupId>org.eclipse.jgit</groupId>
            <artifactId>org.eclipse.jgit</artifactId>
            <version>5.13.0.202109080827-r</version>
        </dependency>

        <dependency>
            <groupId>org.eclipse.jgit</groupId>
            <artifactId>org.eclipse.jgit.ssh.apache</artifactId>
            <version>5.13.0.202109080827-r</version>
        </dependency>

我的用例不需要更改代码。