如何解决为什么 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 举报,一经查实,本站将立刻删除。