簡體   English   中英

使用JSch將一個文件從遠程計算機復制到另一台遠程計算機

[英]Using JSch to copy one file from remote machine to another remote machine

我已經看到很多JSch的例子,其中一個可以從本地復制到遠程機器,反之亦然。 如果我能夠為兩台遠程計算機提供登錄憑據,那么在JSch中是否可以從一台遠程計算機復制到另一台遠程計算機。

我試過以下代碼

     JSch jsch=new JSch();
     Session session=jsch.getSession(user1, host1, 22);

     // username and password will be given via UserInfo interface.
     UserInfo ui=new MyUserInfo(password);
     session.setUserInfo(ui);
     session.connect();

     Session remoteSession = jsch.getSession(user2, host2, 22);
     UserInfo ui2 = new MyUserInfo(password2);
     remoteSession.setUserInfo(ui2);
     remoteSession.connect();

     // exec 'scp -f rfile' remotely
     String command="scp -f "+lfile;
     Channel channel=session.openChannel("exec");
     ((ChannelExec)channel).setCommand(command);

     Channel channel2=session.openChannel("exec");
     ((ChannelExec)channel2).setCommand(command);

     // get I/O streams for remote scp
     OutputStream out=channel.getOutputStream();
     InputStream in=channel2.getInputStream();

     channel.connect();
     channel2.connect();

從輸入流中讀取后掛起。 請讓我知道如何實現遠程到遠程復制。

關於我能想到實現這一目標的唯一方法是使用JSch發出原始SCP命令來執行從遠程主機A到遠程主機B的文件傳輸。為了做到這一點,你可能需要設置公共兩個主機(A和B)之間的密鑰驗證,因此在連接到遠程主機B時不需要以交互方式提供密碼。雖然我相信可以通過連接通道提供此密碼,但我只是不確定怎么樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM