我正在尝试通过单击按钮连接到 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() 方法调用。它会起作用的。当我将相同的代码与 Button Click 的 actionPerformed() 方法集成时,它会给我上述异常。
谁能建议我在这里做错了什么,或者应该对代码进行任何修改。
我尝试使用“SSHJ”实现连接到 SSH 服务器,但出现以下错误:
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)
有人可以帮助我 - 如何前进?