10

jgitを使用してGitHubのリポジトリに安全にアクセスしています。GitHubとクライアントコード間の安全な通信のためのキーを生成するために、次のことを行いました。

  1. キーペアを生成しました:

    ssh-keygen -t rsa
    
  2. アカウント設定->SSHキー->SSHキーの追加でGitHubアカウントに公開キーを追加しました

  3. 手順1で生成された秘密鍵をローカルホストに追加しました。

    ssh-add id_rsa
    

これを行った後、GitHubにアクセスしてクローンを作成しようとすると、次のエラーが発生します。

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)

これは私が使用したコードです:

    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();
        }

ここで問題とそれを修正するために何をすべきかを教えてください。

ありがとう。

4

2 に答える 2

22

~/.ssh/known_hostsこれは、にgithubのエントリがないために発生しJSch、この場合、jgitでデフォルトでセッションを拒否するために使用されます。解決策については、この質問を参照してください:com.jcraft.jsch.JSchException:UnknownHostKey

sshセッションプロパティを設定するには、jgitのセッションファクトリを作成する必要があります。

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

StrictHostKeyChecking=noまたはに追加~/.ssh/config

于 2012-11-15T11:55:56.247 に答える
4

このスレッドは最初の結果であるため:

com.jcraft.jsch.JSchException:UnknownHostKey:gitservername。RSAキーフィンガープリント」

問題が解決しない場合の唯一の答えは、StrictHostKeyCheckingを無効にすることです。これは、セキュリティ上の理由から受け入れられません。

問題が解決しない場合は、別のスレッドからこの回答を確認する必要があります。

https://stackoverflow.com/a/44777270/13184312

永続的な問題を解決したのは:

ssh-keyscan -H -t rsa gitservername >> ~/.ssh/known_hosts
于 2020-04-03T16:48:25.867 に答える