Я пытаюсь получить файл с сервера, используя SFTP (в отличие от FTPS), используя Java. Как я могу это сделать?
Переведено автоматически
Ответ 1
Другой вариант - рассмотреть возможность использования библиотеки JSch. JSch, похоже, является предпочтительной библиотекой для нескольких крупных проектов с открытым исходным кодом, включая Eclipse, Ant и Apache Commons HttpClient, среди прочих.
Он прекрасно поддерживает как логины на основе user / pass, так и на основе сертификатов, а также целый ряд других замечательных функций SSH2.
Вот простой способ удаленного получения файла через SFTP. Обработка ошибок оставлена в качестве упражнения для читателя :-)
Sessionsession= jsch.getSession( "remote-username", "remote-host" ); { // "interactive" version // can selectively update specified known_hosts file // need to implement UserInfo interface // MyUserInfo is a swing implementation provided in // examples/Sftp.java in the JSch dist UserInfoui=newMyUserInfo(); session.setUserInfo(ui);
// OR non-interactive version. Relies in host key being in known-hosts file session.setPassword( "remote-password" ); }
Подводя итог, можно сказать, что SSHJ имеет самый понятный API, и это лучшее из них, если вам не нужна поддержка других хранилищ, предоставляемых Commons VFS.