Java Svnkit+ssh身份验证错误(E170001)

Java Svnkit+ssh身份验证错误(E170001),java,svnkit,Java,Svnkit,我在这里有点新,但是我需要一些代码方面的帮助。这是: SVNRepositoryFactoryImpl.setup(); SVNURL url = SVNURL. parseURIEncoded("svn+ssh://xxx"); File keyFile = new File("C://Users/xxxx/Documents/priave_key/private_key.ppk"); System.ou

我在这里有点新,但是我需要一些代码方面的帮助。这是:

SVNRepositoryFactoryImpl.setup(); 

    SVNURL url = 
      SVNURL. 
          parseURIEncoded("svn+ssh://xxx"); 
    File keyFile = 
          new File("C://Users/xxxx/Documents/priave_key/private_key.ppk"); 
    System.out.println("PPK file space:"+keyFile.getTotalSpace());
    SVNSSHAuthentication sshCredentials = 
         new SVNSSHAuthentication(Settings.name, keyFile, Settings.pass, 22, false, url, false); 
    System.out.println(sshCredentials.getPrivateKey()==null);
    System.out.println("hasPrivateKey(): "+sshCredentials.hasPrivateKey());
    SVNUserNameAuthentication authorNameCredentials = new SVNUserNameAuthentication(Settings.name, false); 
    SVNPasswordAuthentication passwordCredentials =  new SVNPasswordAuthentication(Settings.name, Settings.pass, false); 

    ISVNAuthenticationManager authManager = 
        new BasicAuthenticationManager(new SVNAuthentication[] { 
                     sshCredentials, 
                     authorNameCredentials, 
                     passwordCredentials}); 
    SVNRepository repository = SVNRepositoryFactory.create(url); 
    repository.setAuthenticationManager(authManager); 

    try { 

        SVNDirEntry info = repository.info("", -1); 
        System.out.println(info); 
    } finally { 
        repository.closeSession(); 
    } 
因此,运行此命令后,我得到以下输出:

PPK file space:107374178304
false
hasPrivateKey(): true
Exception in thread "main" org.tmatesoft.svn.core.SVNAuthenticationException: svn:     E170001: Authentication required for 'xxx@svn+ssh://xxx'
    at     org.tmatesoft.svn.core.internal.wc.SVNErrorManager.authenticationFailed(SVNErrorManager.jav    a:47)
    at     org.tmatesoft.svn.core.internal.wc.SVNErrorManager.authenticationFailed(SVNErrorManager.jav    a:41)
    at 

org.tmatesoft.svn.core.auth.BasicAuthenticationManager.getNextAuthentication(BasicAuthentic    ationManager.java:223)
at     org.tmatesoft.svn.core.internal.io.svn.SVNSSHConnector.open(SVNSSHConnector.java:141)
at org.tmatesoft.svn.core.internal.io.svn.SVNConnection.open(SVNConnection.java:77)
at     org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.j    ava:1252)
at     org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.info(SVNRepositoryImpl.java:1195)
    at SVNTestNew.main(SVNTestNew.java:40)

我认为这可能是SVNSSHAuthentication类的问题,因为它为getPrivateKey提供null,为hasPrivateKey提供true。或者这是一个错误的想法?谁能告诉我如何解决这个问题吗?

据我所知,您的公钥和私钥不在正确的位置

如果您使用的是Linux机器, 对于私钥,您有默认路径:-

${USER_HOME}/.ssh/abc.rsa or abc.dsa
您必须将公钥存储在服务器中:

默认路径:-

${USER_HOME}/.ssh/authorized_keys
您可以在/etc/sshd\u配置文件中更改路径