我需要使用ssh連接到運行從遠程計算機一些coommands,但問題是:運行遠程命令槽隧道SSH和java
客戶端計算機(跑步運)被連接到網絡,其中我可以看到一臺服務器遠程(第二臺計算機(nix),在同一個網絡中)我可以用ssh連接它,但是包含這些文件的電腦(Running unix)不在這個網絡中,我只能連接這個通過在第二臺計算機上打開的動態隧道ssh,我通常使用Putty來配置此連接,然後我可以訪問遠程文件。
下圖展示的架構,(防火牆就像是第二A機)
我需要自動進行這項工作,所以我已經做了一些試驗用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。
你能給我例子嗎?,我實現了一個成功的連接 – fers 2012-02-15 04:36:13
,但我不能在資源服務器中執行一個命令 – fers 2012-02-15 04:36:49
當我編寫它時(幾個月前),wiki中的例子對我有用,但當然,您需要一個具有目標服務器執行權限的帳戶。 – 2012-02-15 18:08:04