JSch session.connect () работает с CoreFTP - PullRequest
3 голосов
/ 29 июня 2011

У меня настроен CoreFTP для локального хоста и следующий код:

JSch.setLogger(new MyJschLogger()); //class for console output

Session session = jsch.getSession("user", "localhost", 21);

Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);

session.setPassword("password");
session.connect();

когда программа достигает connect(), на выходе консоли появляются два сообщения:

INFO: Connecting to localhost port 21
INFO: Connection established

... и больше ничего не происходит. Через несколько минут появляется исключение connection is closed by foreign host.

Почему?

Спасибо за все!

Ответы [ 2 ]

3 голосов
/ 29 июня 2011

Порт 21 является обычным портом для FTP .JSch является только SSH клиентом с поддержкой SFTP в классе ChannelSFTP .JSch ничего не знает о FTP (и SFTP не связан с FTP, кроме как по имени и тому, что он допускает аналогичные вещи).

Вам необходимо настроить сервер на использование протокола SSH (обычно на порту 22, но выможет использовать любой порт, если вы используете тот же порт на клиенте).См. документацию - я думаю, что вы должны установить флажок SSH.

Кроме того, если ваш код - не что иное, как то, что вы опубликовали, то ничего больше, чем подключение не произойдет.Для передачи файлов вам необходимо открыть ChannelSFTP и выполнить правильные команды (например, вызвать один или несколько методов put / get).

0 голосов
/ 29 апреля 2016

Я тоже сталкивался с подобной проблемой:

"ERROR 2016-04-27 15:05:16,489 [CollectionThreadPool-0] com.dell.supportassist.collector.cli.executor.SSHExecutor: com.jcraft.jsch.JSchException: connection is closed by foreign host"

В моем случае канал закрывался случайным образом. И когда мы пытаемся повторно подключить канал, он не подключился и не вышел из строя.

Это происходило из-за циклической логики при подключении, поэтому я попытался подключить сеанс без канала, вызвав метод connectWithoutOpenChannel вместо connectinternal(). Это решило мою проблему.

...