Я пытаюсь сделать двойной переход по SSH в java с помощью jsch. это примерно так: scheme
Я сталкиваюсь с проблемой сброса подключения при подключении ко второму сеансу.
Вот код:
String user=user; String host=host; String pswd=pass;
JSch jsch = new JSch();
Session session= jsch.getSession(user, host, 22);
session.setPassword(pswd);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
System.out.println("Connecting to host1 ");
session.connect();
lport=2248;
rhost= rhost;
rport= 22;
int assinged_port=session.setPortForwardingL(lport, rhost, rport);
String user2=user;
String pswd2= pswd;
Session session2=jsch.getSession(user2, "localhost", assinged_port);
session2.setPassword(pswd2);
session2.setConfig(config);
System.out.println("Connecting to rhost via localhost:" + assinged_port);
session2.connect();
Channel channel = session2.openChannel("exec");
((ChannelExec)channel).setCommand("sh run");
channel.setInputStream(null);
ByteArrayOutputStream errorStream = new ByteArrayOutputStream();
((ChannelExec)channel).setErrStream(errorStream);
ByteArrayOutputStream out = new ByteArrayOutputStream();
channel.setOutputStream(out);
channel.connect();
while(true){
if(channel.isClosed()){
System.out.println("exit-status: "+ channel.getExitStatus());
break;
}
}
String result =new String(out.toByteArray());
channel.disconnect();
Вот итоговая ошибка:
com.jcraft.jsch.JSchException: Session.connect: java.net.SocketException: сброс соединения на com.jcraft.jsch.Session.connect (Session.java:565) на com.jcraft.jsch.Session.connect (Session. java: 183)
Не знаю, что делаю не так и как подключиться ко второму серверу.
Также попробовал решение этого вопроса - ›SSH-туннелирование через JSch
но у меня такая же ошибка сброса подключения при втором подключении
Заранее благодарим за помощь и советы!