【问题标题】:Jsch, execute commands over JumpHostsJsch,通过 JumpHosts 执行命令
【发布时间】:2018-07-26 08:10:26
【问题描述】:

帮助 Jsch,通过 JumpHosts 执行命令:我需要在无法直接访问的服务器中获得 SSH 访问权限,因为中间有一个 SSH 跳转服务器。我使用 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);
}

【问题讨论】:

  • 您是否能够使用普通的 ssh 客户端(如 putty 或 openssh)连接到服务器?
  • 也许可以试试using something like this
  • 是的,我可以使用典型的 ssh 客户端跳转到第二台主机。问题来自 Java 应用程序:我可以从应用程序连接并从 server1(跳转服务器)获取提示,但我不知道如何在第二台服务器上连接或执行命令
  • 马特克拉克:谢谢,我要试试
  • 使用SSH客户端的时候怎么做?是什么阻止您使用 JSCH 做同样的事情?

标签: java ssh jsch


【解决方案1】:

我只是按照我的要求做了。我分享给任何需要它的人:在此之后,您必须创建 Channel("Shell/Exec") 并管理输入/输出流(对不起我的英语)

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!");
              }
     }

 }

【讨论】:

    猜你喜欢
    • 2011-08-15
    • 1970-01-01
    • 2011-01-25
    • 2017-08-17
    相关资源
    最近更新 更多