Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jsch,在JumpHosts上执行命令_Java_Ssh_Jsch - Fatal编程技术网

Java Jsch,在JumpHosts上执行命令

Java Jsch,在JumpHosts上执行命令,java,ssh,jsch,Java,Ssh,Jsch,帮助Jsch,在JumpHosts上执行命令:我需要在一个无法直接访问的服务器上获得SSH访问权限,因为中间有一个SSH jump服务器。我使用JSCH库,但文档(JumpHosts.java示例)是关于如何获取服务器文件目录的。有什么建议吗 public static void main(String[] arg){ try{ JSch jsch=new JSch(); String host="host ip"; if(arg.length>0){ hos

帮助Jsch,在JumpHosts上执行命令:我需要在一个无法直接访问的服务器上获得SSH访问权限,因为中间有一个SSH jump服务器。我使用JSCH库,但文档(JumpHosts.java示例)是关于如何获取服务器文件目录的。有什么建议吗

  public static void main(String[] arg){


try{
  JSch jsch=new JSch();

  String host="host ip";
  if(arg.length>0){
    host=arg[0];
  }

  String user = "username"; 


  session=jsch.getSession(user, host, 22);
  String passwd = "password";
  session.setPassword(passwd);

  UserInfo ui = new MyUserInfo(){
    public void showMessage(String message){
      JOptionPane.showMessageDialog(null, message);
    }


  };

  session.setUserInfo(ui);
  session.connect(30000);   // making a connection with timeout.

  channel=session.openChannel("shell");
  channel.setInputStream(System.in);
  channel.setOutputStream(System.out);

  channel.connect(3*1000);



}
catch(Exception e){
  System.out.println(e);
}

我只是照我说的做了。我为任何需要它的人分享:在此之后,您必须创建频道(“Shell/Exec”)并管理流输入/输出(我的英语很抱歉)


您能够使用普通的ssh客户端(如putty或openssh)连接到服务器吗?可以试试吗?是的,我可以使用典型的ssh客户端跳转到第二台主机。问题来自Java应用程序:我可以从应用程序连接并从服务器1(跳转服务器)获取promp,但我不知道如何在第二台服务器上连接或执行命令马特·克拉克:谢谢,我要试试看,在使用SSH客户端时,您是如何做到的?是什么阻止你使用JSCH做完全相同的事情?
public static void sesionA(){
     try {
        Session sessionA = jSch.getSession(username, hostA);  
        Properties config = new Properties(); 
        config.put("StrictHostKeyChecking", "no");
        sessionA.setConfig(config);
        sessionA.setPassword(passwordA);
        sessionA.connect();


        if(sessionA.isConnected()) {
            System.out.println("Connected host A!");
            forwardedPort = 2222;
            sessionA.setPortForwardingL(forwardedPort, hostB, 22);      
        }

    } catch (JSchException e) {
        e.printStackTrace();
    }
 }

 public static void sesionB(){


        try {
            Session sessionB = jSch.getSession(username, "localhost", forwardedPort);

        Properties config = new Properties(); 
        config.put("StrictHostKeyChecking", "no");
        sessionB.setConfig(config);
        sessionB.setPassword(passwordB);
            sessionB.connect();

          if(sessionB.isConnected()) {
             System.out.println("Connected host B!");
              }
     }

 }