Java 使用JSch将一个文件从远程计算机复制到另一个远程计算机
我已经看到了很多JSch的例子,其中一个可以从本地复制到远程机器,反之亦然。在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=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的标准输出?如果是前者,我认为您的解决方案与我的建议不一致。我将其作为远程主机的标准输出获得