JSch не может найти закрытый ключ, используя addIdentity при использовании HTTP URL - PullRequest
0 голосов
/ 05 июля 2019

Я использовал JSch для установления SFTP-соединения с сервером OpenSSH, и в этом процессе, когда я пытаюсь добавить приватный ключ в качестве идентификатора в форме URI, закрытый ключ не распознается.

КогдаЯ пытаюсь запустить URL из браузеров, он работает правильно.

Я пробовал использовать экранирующие символы полностью, но не работал.

Session session = null;
ChannelSftp channelSftp = null;

log.info(file.getOriginalFilename());
log.info(privatekey);
JSch jsch = new JSch();
jsch.addIdentity(this.privatekey);
log.info("identity added ");
session = jsch.getSession(username,hostname,portno);
log.info("Session Created");
session.setPassword(password);

Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setTimeout(60000);
session.connect();
log.info("session connected.....");
channelSftp = (ChannelSftp) session.openChannel("sftp");
log.info("Channel Opened.....");
log.info(channelSftp.toString());

channelSftp.setInputStream(System.in);
channelSftp.setOutputStream(System.out);
channelSftp.connect();
log.info("Channel connected.....");
//channelSftp.cd(destination);
log.info(file.getOriginalFilename());
channelSftp.put(file.getInputStream(), file.getOriginalFilename(), ChannelSftp.OVERWRITE);
channelSftp.put(file.getInputStream(),file.getOriginalFilename());


channelSftp.disconnect();
session.disconnect();

Я предполагаю, что ключ долженбыть добавленным с использованием идентификатора добавления, но, к сожалению, я получаю следующую ошибку

[https-jsse-nio-10443-exec-10] cdalrsBlkCounterpartyServiceImpl: Обнаружена ошибка: com.jcraft.jsch.JSchException: java.io.FileNotFoundException: http: /staging.fileserver.com/properties/xyz/xyz/xyz.ppk (нет такого файла или каталога).

Файл доступен в этом месте http://staging.fileserver.com/properties/xyz/xyz/xyz.ppk

1 Ответ

0 голосов
/ 05 июля 2019

Документация для JSch.addIdentity метод говорит:

prvkey - имя файла файла закрытого ключа. ...

"имя файла" = путь к локальному имени файла , а не HTTP URL .

Если вы хотите загрузить файл с сервера HTTP (что является ужасной идеей с точки зрения безопасности), вы должны закодировать его.

...