Я использую Jsch и ожидаю подключения к сетевым устройствам и обновления конфигураций, смены паролей и т. д.
У меня возникла проблема, когда петлевые соединения остаются открытыми, что препятствует созданию дополнительных сеансов ssh. Я читал, что это проблема с некоторыми версиями OpenSSH и что решение заключается в обновлении sshd. К сожалению, иногда это невозможно при подключении к сетевым устройствам.
Нет ли обходного пути?
EDIT. Вот мой код. Разве я не закрываю все вручную?
JSch jSch = new JSch();
Session session = jSch.getSession("username", h.hostname);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setPassword("password");
session.connect();
Channel channel = session.openChannel("shell");
Expect expect = new ExpectBuilder()
.withOutput(channel.getOutputStream())
.withInputs(channel.getInputStream(), channel.getExtInputStream())
.withEchoOutput(System.out)
.withEchoInput(System.err)
.withExceptionOnFailure()
.build();
channel.connect();
expect.expect(contains("#"));
expect.sendLine("showRules\r");
String response = expect.expect(regexp("#")).getBefore();
System.out.println("---" + response + "----");
expect.sendLine("exit\r");
expect.close();
channel.disconnect();
session.disconnect();