使用JSch将一个文件从远程计算机复制到另一台远程计算机

时间:2014-01-10 13:38:36

标签: java jsch

我见过很多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();

从输入流中读取后挂起。请让我知道如何实现远程到远程复制。

1 个答案:

答案 0 :(得分:0)

关于我能想到实现这一目标的唯一方法是使用JSch发出原始SCP命令来执行从远程主机A到远程主机B的文件传输。为了做到这一点,你可能不得不在两台主机(A和B)之间设置公钥认证,因此在连接到远程主机B时不需要以交互方式提供密码。虽然我相信可以通过连接通道提供此密码,但我是只是不确定如何。