Java 为什么JGit Push总是返回“返回”;“auth falied”;

Java 为什么JGit Push总是返回“返回”;“auth falied”;,java,git,maven,jgit,gitlab-ce,Java,Git,Maven,Jgit,Gitlab Ce,我已经开始将JGit集成到我正在进行的项目中。我得到了一切,除了“推动”工作。简而言之,我的程序生成并写入一个json文件。然后将其添加到git暂存区域,提交它,并将其推送到原点。。。理论上 然而,每当我试图推送到我的远程来源时,我得到的消息是“Auth failed”。我们有一个自托管的gitlab服务器,我已经设置好使用个人访问令牌(通过GitKraken可以很好地工作) 我尝试了以下各种版本: git.remoteAdd() .setName("origin")

我已经开始将JGit集成到我正在进行的项目中。我得到了一切,除了“推动”工作。简而言之,我的程序生成并写入一个json文件。然后将其添加到git暂存区域,提交它,并将其推送到原点。。。理论上

然而,每当我试图推送到我的远程来源时,我得到的消息是“Auth failed”。我们有一个自托管的gitlab服务器,我已经设置好使用个人访问令牌(通过GitKraken可以很好地工作)

我尝试了以下各种版本:

git.remoteAdd()
  .setName("origin")
  .setUri(new URIish("git@gitlab.foo.com:folder/project.git"))
  .call();

git.commit()
  .setSign(false)
  .setMessage("my favorite message")
  .call();

git.push()
  .setTransportConfigCallback(new SshTransportConfigCallback())
  .setCredentialsProvider(new UsernamePasswordCredentialsProvider("PRIVATE-TOKEN", "--my--token--"));
  .call();
我尝试了以下URI:

new URIish("git@gitlab.foo.com:folder/project.git")
new URIish("https://gitlab-ci-token:--my--token--@gitlab.foo.com:folder/project.git")
new URIish("https://myuser:--my--token--@gitlab.foo.com:folder/project.git")
new URIish("https://gitlab.foo.com:folder/project.git")
我尝试过以下认证提供者:

new UsernamePasswordCredentialsProvider("PRIVATE-TOKEN", "--my--token--")
new UsernamePasswordCredentialsProvider("myuser", "--my--token--")
new UsernamePasswordCredentialsProvider("", "--my--token--")
new UsernamePasswordCredentialsProvider("--my--token--", "")
new UsernamePasswordCredentialsProvider("myuser", "my.actual.gitlab.password")
SSHTTransportCallback是我从另一篇文章中获得的。没有它,遥控器意外地经常挂断

public class SshTransportConfigCallback implements TransportConfigCallback {

    private final SshSessionFactory sshSessionFactory = new JschConfigSessionFactory() {
        @Override
        protected void configure(OpenSshConfig.Host hc, Session session) {
            session.setConfig("StrictHostKeyChecking", "no");
        }
    };

    @Override
    public void configure(Transport transport) {
        SshTransport sshTransport = (SshTransport) transport;
        sshTransport.setSshSessionFactory(sshSessionFactory);
    }

}
最终,它在com.jcraft.jsch.Session.connect()中抛出了一个JschException。。。在519线上或附近

我目前正在使用JGit包的v5.11.0:

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

<dependency>
    <groupId>org.eclipse.jgit</groupId>
    <artifactId>org.eclipse.jgit.ssh.jsch</artifactId>
    <version>5.11.0.202103091610-r</version>
</dependency>

org.eclipse.jgit
org.eclipse.jgit
5.11.0.202103091610-r
org.eclipse.jgit
org.eclipse.jgit.ssh.jsch
5.11.0.202103091610-r