Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JSch将一个文件从远程计算机复制到另一个远程计算机_Java_Jsch - Fatal编程技术网

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

Java 使用JSch将一个文件从远程计算机复制到另一个远程计算机,java,jsch,Java,Jsch,我已经看到了很多JSch的例子,其中一个可以从本地复制到远程机器,反之亦然。在JSch中,如果我能够为两台远程机器提供登录凭据,是否有一种方法可以从一台远程机器复制到另一台远程机器 我尝试了以下代码 JSch jsch=new JSch(); Session session=jsch.getSession(user1, host1, 22); // username and password will be given via UserInfo interface

我已经看到了很多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时,您不需要以交互方式提供密码。虽然我确实相信可以通过连接通道提供此密码,但我不确定如何提供。

尝试过,但它不起作用:(还有其他想法吗?给出了一个错误,表示该文件不存在。在调用SCP时,您是否将其视为Java异常或远程主机a的标准输出?如果是前者,我认为您的解决方案与我的建议不一致。我将其作为远程主机的标准输出获得