#java #ssh
#java #ssh
Вопрос:
Всем привет, я пытаюсь создать Java-программу, которая будет подключаться к ssh-серверу, а затем считывать имя пользователя и пароль из файла и вводить правильные комбинации в новый файл, однако я получаю сообщение об ошибке com.jcraft.jsch.JSchException: timeout: socket is not established
должен ли я что-то загрузить в дополнение к запуску кода? или предполагается, что код сам устанавливает соединение? Спасибо за помощь
package javaapplication3;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author World
*/
public class JavaApplication3 {
public static void main(String args[]) throws UnsupportedEncodingException {
String user = "john";
String password = "123";
String host = "192.168.100.23";
int port = 22;
String remoteFile = "pass.txt";
try {
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
System.out.println("Establishing Connection...");
session.setTimeout(20000);
session.connect();
System.out.println("Connection established.");
System.out.println("Crating SFTP Channel.");
ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
sftpChannel.connect();
System.out.println("SFTP Channel created.");
InputStream inputStream = sftpChannel.get(remoteFile);
try (Scanner scanner = new Scanner(new InputStreamReader(inputStream))) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] sArray = line.split(",");
System.out.println(sArray[0]); //Just to verify that file is being read
System.out.println(sArray[1]);
if (user == sArray[0] amp;amp; password == sArray[1]){
File file = new File ("C:/Users/Me/Desktop/directory/file.txt");
PrintWriter printWriter = null;
try {
printWriter = new PrintWriter ("file.txt");
} catch (FileNotFoundException ex) {
Logger.getLogger(JavaApplication3.class.getName()).log(Level.SEVERE, null, ex);
}
printWriter.println ("hello");
printWriter.close ();
}
else
{
System.out.println(line);
}
}
}
} catch (JSchException | SftpException e) {
e.printStackTrace();
}
}
}
Комментарии:
1. Опубликовать трассировку стека
2. Можете ли вы подтвердить, что
192.168.100.23
открыт и прослушивается порт 22? Это похоже на сетевую ошибку, а не на ошибку приложения.3. нет, он не прослушивается, как мне это настроить?