如何为 jgit 设置 jschconfigsessionfactory 的配置以便拉取和推送工作?

2023-11-24

我正在尝试使用 jgit 的 api 和以下代码进行 git pull/push

org.eclipse.jgit.api.Git.open(theRepoFile).pull().call()

但我遇到了例外

JSchException Auth fail
com.jcraft.jsch.Session.connect (Session.java:461)
org.eclipse.jgit.transport.JschConfigSessionFactory.getSession (JschConfigSessionFactory.java:116)
org.eclipse.jgit.transport.SshTransport.getSession (SshTransport.java:121)
org.eclipse.jgit.transport.TransportGitSsh$SshPushConnection.<init> (TransportGitSsh.java:306)
org.eclipse.jgit.transport.TransportGitSsh.openPush (TransportGitSsh.java:152)
org.eclipse.jgit.transport.PushProcess.execute (PushProcess.java:130)
org.eclipse.jgit.transport.Transport.push (Transport.java:1127)
org.eclipse.jgit.api.PushCommand.call (PushCommand.java:153)

尽管使用 cgit pull 和 Push 是有效的。

我尝试检查示例代码

使用 jgit 的 Java git 客户端

但上述问题没有提供完整的编码示例,说明使用通常通过 ssh 密钥进行身份验证的远程存储库进行 git pull 所需的操作。应该有一种方法可以从中获取凭据信息~/.ssh/或 Windows 等效项。


Jsch 将自动检测您的 SSH 密钥,但如果这些密钥受密码保护,则会失败。您需要通过 CredentialsProvider 指定密码,如下所示:

JschConfigSessionFactory sessionFactory = new JschConfigSessionFactory() {
@Override
protected void configure(OpenSshConfig.Host hc, Session session) {
    CredentialsProvider provider = new CredentialsProvider() {
        @Override
        public boolean isInteractive() {
            return false;
        }

        @Override
        public boolean supports(CredentialItem... items) {
            return true;
        }

        @Override
        public boolean get(URIish uri, CredentialItem... items) throws UnsupportedCredentialItem {
            for (CredentialItem item : items) {
                ((CredentialItem.StringType) item).setValue("yourpassphrase");
            }
            return true;
        }
    };
    UserInfo userInfo = new CredentialsProviderUserInfo(session, provider);
    session.setUserInfo(userInfo);
}
};
SshSessionFactory.setInstance(sessionFactory);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为 jgit 设置 jschconfigsessionfactory 的配置以便拉取和推送工作? 的相关文章

随机推荐