JSch SFTP код зависает при передаче файла - PullRequest
1 голос
/ 18 марта 2019

Моя задача - скопировать некоторые файлы с сервера на локальный, я много искал о библиотеках подключений и нашел JSch.Я использовал приведенный ниже код, но это занимает слишком много времени, чтобы прочитать или переместить файл.Я не знаю, работает ли он или нет.

JSch jsch = new JSch();
Session session = null;
try {
    // set up session
    session = jsch.getSession("userName","hostIP");
    // use private key instead of username/password
    session.setConfig(
            "PreferredAuthentications",
            "publickey,gssapi-with-mic,keyboard-interactive,password");
    jsch.addIdentity("***.ppk");
    java.util.Properties config = new java.util.Properties();
    config.put("StrictHostKeyChecking", "no");
    session.setConfig(config);
    session.connect();

    // copy remote log file to localhost.
    ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");
    channelSftp.connect();
    channelSftp.setInputStream(System.in);
    channelSftp.setOutputStream(System.out);
    System.out.println("shell channel connected....");

    ChannelSftp c = (ChannelSftp) channelSftp;

    System.out.println("done");
    channelSftp.get("report.xml", "C:\\Users\\akrishnan");
    channelSftp.exit();

} catch (Exception e) {
    e.printStackTrace();
} finally {
    session.disconnect();
}

Есть ли какая-либо библиотека, которую я могу использовать для подключения серверов из моего кода Java с помощью файла закрытого ключа (**. Ppk)?

1 Ответ

1 голос
/ 18 марта 2019

Это наиболее вероятно, что вызывает зависание:

channelSftp.setInputStream(System.in);
channelSftp.setOutputStream(System.out);

Выполнение этого для канала "sftp" нарушает все.Это не имеет никакого смысла.Просто удалите эти две строки.

Проверьте официальный Пример JSch SFTP - Таких вызовов нет.

Правильный код для передачи файлов с использованием JSch см .: Передача файлов SFTP с использованием Java JSch .


Обязательное предупреждение: не используйте StrictHostKeyChecking=no для слепого принятия всех ключей хоста.Это недостаток безопасности.Вы теряете защиту от MITM-атак .

Для правильного (и безопасного) подхода см .:
Как разрешить Java UnknownHostKey при использовании библиотеки JSch SFTP?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...