Java – unknownhostkey exception when accessing GitHub safely

I am using jgit to securely access the repository in GitHub I did the following to generate a secure communication key between GitHub and my client code

>Generate key pair:

ssh-keygen -t rsa

>Use account settings – > added public key to GitHub account SSH key – > Add SSH key > add the private key generated in step 1 to the local host:

ssh-add id_rsa

After this operation, when I try to access GitHub and clone, I still receive the following error:

org.eclipse.jgit.api.errors.TransportException: git@github.com:test/test_repo.git: UnkNownHostKey: github.com. RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:137)
at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:178)
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:125)

This is the code I use:

String localPath,remotePath;
    Repository localRepo;
    Git git;

    localPath = <path_to_local_repository>;
    remotePath = "git@github.com:test/test_repo.git";

    try {
        localRepo = new FileRepository(localPath + "/.git");
    } catch (IOException e) {
        e.printStackTrace();
    }
    git = new Git(localRepo);

    CloneCommand cloneCmd =  git.cloneRepository().
                setURI(remotePath).
                setDirectory(new File(localPath));
        try {
            cloneCmd.call();
        } catch (GitAPIException e) {
            log.error("git clone operation Failed");
            e.printStackTrace();
        }

Please tell me the problem here and what I can do to correct it

thank you.

Solution

This happens because ~ / ssh / kNown_ There is no GitHub entry in hosts, and the jsch used in jgit rejects the session by default For solutions, see this question: com jcraft. jsch. JSchException: UnknownHostKey

To set SSH session properties, you need to create a session factory for jgit:

SshSessionFactory.setInstance(new JschConfigSessionFactory() {
  public void configure(Host hc,Session session) {
    session.setConfig("StrictHostKeyChecking","no");
  }
})

Or add stricthostkeychecking = no to ~ / ssh / config

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>