2012-02-14 14 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