Ошибка аутентификации Svnkit + ssh (E170001)
Я немного новичок здесь, но мне нужна помощь с моим кодом. Вот:
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()
и верно для hasPrivateKey(
.) Или это неправильная идея? Может кто-нибудь сказать мне, как можно решить эту проблему?
1 ответ
Решение
По моему мнению, ваш открытый и закрытый ключи не в нужном месте.
Если вы используете Linux-машину, то для закрытого ключа у вас есть путь по умолчанию:-
${USER_HOME}/.ssh/abc.rsa or abc.dsa
И вы должны хранить свой открытый ключ на сервере в:
Путь по умолчанию:-
${USER_HOME}/.ssh/authorized_keys
Вы можете изменить свой Путь в /etc/sshd_config file