Я пытаюсь подключиться к серверу SSH Unix по нажатию кнопки (код, написанный в методе actionPerformed ()). Я использую JSch для подключения к серверу SSH. Код написан в классе SwingWorker, так как это сетевая операция.
private void testConnectionButtonActionPerformed(java.awt.event.ActionEvent evt) {
SwingWorker<Boolean, Void> sw = new SwingWorker<Boolean, Void>(){
@Override
protected Boolean doInBackground() throws Exception {
JSch jsch = new JSch();
String host = "ServerHost";
String username = "username";
String password = "password";
Session session = jsch.getSession(username, host);
session.setPassword(password);
session.setTimeout(20000);
System.out.println("Connecting to server...");
session.connect();
return true;
}
@Override
public void done(){
try {
System.out.println(get().toString());
} catch (Exception ex) {
System.out.err(ex);
}
}
};
sw.execute();
}
Но после запуска с правильными данными хоста, имени пользователя и пароля, я все время получаю сообщение об ошибке ниже:
com.jcraft.jsch.JSchException: timeout: socket is not established
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
at java.util.concurrent.FutureTask.get(FutureTask.java:83)
at javax.swing.SwingWorker.get(SwingWorker.java:583)
Но всякий раз, когда я запускаю один и тот же код в автономной программе, я вместо этого имею в виду написание метода actionPerformed (), если я пишу его в обычном методе и вызываю метод main (). Это будет работать. Когда я интегрирую тот же код с методом action Clicker Button Click, он выдаст мне исключение.
Может кто-нибудь подсказать, что я делаю не так, или в код необходимо внести какие-либо изменения.
Я пытался подключиться к SSH-серверу, используя реализацию "SSHJ", но я получаю следующую ошибку:
java.net.SocketException: Connection reset
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
at java.util.concurrent.FutureTask.get(FutureTask.java:83)
at javax.swing.SwingWorker.get(SwingWorker.java:583)
Может ли кто-нибудь мне помочь - как двигаться вперед?