微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 JGit Push 总是返回“auth failed”

如何解决为什么 JGit Push 总是返回“auth failed”

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

然而,每当我尝试推送到我的远程源时,我得到的消息是“身份验证失败”。我们有一个自托管的 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")

我尝试了以下 CredentialProviders:

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")

SshTransportCallback 是我从另一篇文章中学到的东西。没有它,遥控器总是意外挂断

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()... 中或在第 519 行附近触发了 JschException。

我目前使用的是 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>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。