首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用java的多级ssh连接

使用java的多级ssh连接
EN

Stack Overflow用户
提问于 2014-08-26 08:45:59
回答 1查看 1K关注 0票数 1

我试图使用本地机器(Linux)上的swing GUI在远程计算机(Linux)上运行一组脚本,并将命令输出(正在运行时)读入文本区域。

我试图连接的机器在我的学校防火墙后面,所以我必须先连接到它,然后才能连接到它们。

典型的bash语法应该是这样的:"ssh -t user2 1@host1ssh -t user2 2@host2“--一开始我尝试使用运行时()直接调用上面的命令,但这似乎根本不起作用,或者我遗漏了什么。我没有从下面的程序得到输出。

代码语言:javascript
复制
    Process dirReader = Runtime.getRuntime().exec("ssh -t user1@host1 ssh -t user2@host2");
    InputStream stdout = dirReader.getInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(stdout));
    String line = reader.readLine();
    while(line != null){
        fileNames.add(line);
        line = reader.readLine();
    }
        reader.close();reader=null;
        stdout.close();stdout=null;
        dirReader.destroy();dirReader=null;

    } catch(IOException e){
        System.out.println("Exception: Error reading models directory");
        System.exit(1);
    }

当我用像"ls“这样简单的东西运行上面的时候,我就得到了预期的结果。我怀疑ssh需要一些“特殊”处理,所以在过去的几天里,我一直在与第三方库打交道。JSch和ganymed.

单层连接在这两种情况下都很简单,但我恐怕在多个方面遇到了一些困难。你可能认为有一个简单的解决办法,但我看不见。有几个人建议挖隧道,但我的运气也不太好。

我看到在jSch中有一种方法可以直接打开一个通道来“模仿”一个控制台。这是可行的,但似乎对我想做的事来说太过分了。另外,在GUI后面弹出一个控制台也是不可取的。

因此,我重申,我想:

  1. 建立与另一台服务器后面的机器的ssh连接。
  2. 在服务器上运行脚本
  3. 把剧本的内容放回给我的朋友。

关于#1的建议将不胜感激。

几天来我一直在为这件事而苦恼。有几条类似的线索,但似乎没有人真正回答我的问题。请尽管给我发链接,但如果它在谷歌的前5页,很有可能我已经看到了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-28 00:59:03

经过几个小时的调查,我终于发现了以下情况:

How to use jsch with ProxyCommands for portforwarding

我不知道我是不是遗漏了什么,但我发现至少有50个关于这个问题的线程没有一个令人满意的解决方案。

我想这个故事的寓意是在你开始之前把所有的例子都读一遍。

直接解决方案:http://www.jcraft.com/jsch/examples/JumpHosts.java.html

现在要找到在Windows中执行此操作的方法。最好不要强迫用户安装ssh客户端。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25501585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档