Подключите сервер через другой сервер в сервере putty / jump, используя Java - PullRequest
0 голосов
/ 28 февраля 2019

Мне нужно подключиться к другому серверу после того, как я вошел на сервер замазки, используя код Java, и мне нужно загружать файлы со второго сервера после того, как я подключился.У кого-нибудь есть код.

Как только появляется экран сервера замазки, я ввожу имя пользователя и пароль, затем я передаю команду "ssh servername", затем мне нужно ввести да, чтобы появился вопрос.

После того, как все вышеперечисленное сделано, мне нужно перейти в разные папки и загрузить файлы на сервер 1.

Я использовал приведенный ниже код для подключения к серверу 1, и он подключился. После этого я не уверен, что смогу перейти на сервер 2.

Я получаю сообщение об ошибке, как показано ниже, при попытке удаленного сервера через другой сервер.Ошибка и код, который я ввел ниже

Ошибка:

Exception in thread "main" com.jcraft.jsch.JSchException: connection is closed by foreign host
        at com.jcraft.jsch.Session.connect(Session.java:236)
        at com.jcraft.jsch.Session.connect(Session.java:150)
        at putty.putty.main(putty.java:42)

Код, который я использовал:

   import java.io.IOException;
import java.io.InputStream;
import java.util.Vector;

import org.apache.commons.io.IOUtils;

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;

public class putty {
    public static String user = "username";
    public static String host = "server1.server.net";
    public static String password = "Password";
    public static String secondpassword = "Password";
    public static String tunnelRemoteHost = "server2.server.net";

    public static void main(String[] args) throws IOException, JSchException, SftpException {
        StringBuilder outputBuffer = new StringBuilder();    
        int port = 22;    
        JSch jsch = new JSch();
        Session session = jsch.getSession(user, host, port);
        session.setPassword(password);
        session.setConfig("StrictHostKeyChecking", "no");
        session.connect();

        int forwardPort = 2222;
        session.setPortForwardingL(forwardPort, tunnelRemoteHost, 22);
        Session secondSession = jsch.getSession(user, "localhost", forwardPort);
        secondSession.setPassword(secondpassword);
        secondSession.setConfig("StrictHostKeyChecking", "no");        
        secondSession.connect();      
        session.openChannel("sftp");
         // now we're connected to the secondary system
        Channel channel = secondSession.openChannel("sftp");
        channel.connect();
        ChannelSftp channelSftp = (ChannelSftp)channel;     

        channel.disconnect();

        session.disconnect();

        System.out.print(outputBuffer.toString());

    }
}

Я использую последнюю версию jsch jar 0.1.55.Может кто-нибудь заглянуть и дать мне то, чего мне здесь не хватает.

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Я могу достичь того, что хотел, через командную строку Windows с помощью команды plink

0 голосов
/ 02 марта 2019

Попробуйте обновить jsch до 0.1.55 https://mvnrepository.com/artifact/com.jcraft/jsch/0.1.55

Вашей текущей версии 0.1.42 почти 10 лет.Это может ничего не изменить или может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...