我正在尝试设置使用SSH连接到远程Git存储库的Spring Cloud配置,但不断得到错误"算法协商失败"。有人建议我更改SSH客户端,因为Jsch 0.1.55不支持某些密钥算法,但Jsch由JGit使用,而JGit又由Spring Cloud Config使用,所以它不是一个真正的选项,是吗?
我可以使用HTTPS连接到存储库,这真的是现在唯一的选择吗?
任何帮助都将是非常感激的。
最诚挚的问候,詹姆斯
您可以像下面这样使用com.github.mwiede:jsch:0.2.2
和jgit:5.13.1.202206130422-r
:
pom.xml
<dependencies>
<!-- Git -->
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
<version>5.13.1.202206130422-r</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.ssh.jsch</artifactId>
<version>5.13.1.202206130422-r</version>
<exclusions>
<exclusion>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.mwiede</groupId>
<artifactId>jsch</artifactId>
<version>0.2.2</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>RELEASE</version>
<scope>test</scope>
</dependency>
</dependencies>
junit测试
@Test
void gitClone() {
CloneCommand cloneCommand = Git.cloneRepository()
.setURI("git@github.com:mwiede/jsch.git")
.setDirectory(new File("target/junit/clone-test"));
assertDoesNotThrow(cloneCommand::call).close();
}