Подключение к сервису через JSch - ожидаемый тип пакета 30, получено 34 - PullRequest
0 голосов
/ 02 июня 2018

Я пытался подключиться через SSH к коммутатору 3-го уровня с помощью Java, выполнить некоторую команду и получить ответ с помощью библиотеки JSch (jsch-0.1.54.jar).

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

String host="X.X.X.X";
String user="AAA";
String password="PPP";

JSch js = new JSch();
Session session=js.getSession(user, host, 22);
session.setPassword(password);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();

Я получаю следующую ошибку

com.jcraft.jsch.JSchException: SSH_MSG_DISCONNECT: 2 Protocol error: expected packet type 30, got 34 
    at com.jcraft.jsch.Session.read(Session.java:1004)
    at com.jcraft.jsch.Session.connect(Session.java:323)

1 Ответ

0 голосов
/ 04 июня 2018

Похоже на ошибку на сервере SSH.

В любом случае тип пакета 34 - это SSH_MSG_KEX_DH_GEX_REQUEST.Попробуйте отключить KEXes «diffie-hellman», чтобы JSch не пытался это сделать.

config.put("kex", "ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521");

Если это не поможет, опубликуйте файл журнала JSch .

...