2012-02-14 12 views
0

我需要使用SSH连接从远程计算机上获取了一些文件,但问题是:传输文件低谷SSH隧道与Java

客户端(运行Windows),我会跑我的应用程序的计算机连接到包含文件(运行Unix)的网络在那里我可以看到服务器的远程(第二台计算机(运行Unix),在相同的网络),我可以用它做SSH连接,但电脑是不是在这个网络中,我只可以连接这个低谷动态隧道SSH的第二台电脑,在这里我通常使用腻子的配置此连接,然后我就可以访问远程文件打开。

下图展示的架构,(防火墙就像是第二A机)

Architecture

我需要自动进行这项工作,所以我已经做了一些试验用java和JSch库,这里是一些代码:

/* Direccion y puerto del host local */ 
    String host = "localhost"; 
    int lport = 5040; 


    /* Direccion y puerto del host remoto*/ 
    String rhost = "localhost"; 
    int rport = 80; 

    /* Usuario y password para conectarse al servidor ssh*/ 
    String user = "test"; 
    String pwd = "test"; 

    try{ 
     JSch jsch=new JSch(); 

     Session session=jsch.getSession(user, host, 22); 
     session.setPassword("test"); 

     Properties config = new Properties(); 
     config.put("StrictHostKeyChecking","no"); 
     session.setConfig(config); 
     session.connect(); 

     int assinged_port=session.setPortForwardingL(lport, rhost, rport); 
     System.out.println("localhost:"+assinged_port+" -> "+rhost+":"+rport); 

我连接,但是当我运行一个命令全光照对象的会话的答案是从第二台机器不是从如我所料的第三台机器,我想知道是否有ANOT她的图书馆,有助于使这项工作或我使用错误的JSch。

回答

0

这是同样的答案,your other question(你正在使用的文件传输的外壳连接,而不是):

把正确的主机名rhost,即名字目标服务器视为来自防火墙服务器可见。

如果它与HTTP的作品,我想的是,防火墙服务器还拥有一个HTTP代理运行转发端口80上的请求到目标端口...当然,它不能,如果它也做了SSH应该是一个SSH服务器本身。

如果你想从JSch做两个连接,而不是做一个本地端口转发,然后连接到这个转发的端口,你可以使用我的ProxySSH类,找到in the JSch wiki

+0

维基链接不工作了 – sjngm 2017-08-04 15:16:45

+0

这是不幸的 - 看起来像SourceForge上得到了(至少在这个项目)摆脱它们链接到MediaWiki功能。我会看看我是否有某个版本的这个类存储在某个地方。 – 2017-08-04 16:44:36