Jsch是否支持第三方scp文件传输操作?

时间:2015-08-03 15:13:07

标签: ssh scp jsch

我需要使用SCP在两台远程机器之间复制文件(比方说A和B)。假设我在机器C上运行的java代码,我需要将文件从A移动到B,我目前所做的是从A到C的SCP文件,然后从C到B再做一个SCP。但我知道SCP支持使用“SCP -3”选项直接在两个远程主机之间传输文件。我使用jsch库在两台机器之间执行scp。 jsch是否支持上述操作?如果不是我可以使用的任何其他图书馆?

1 个答案:

答案 0 :(得分:1)

Jsch不包含对SCP协议的任何直接支持。您可以使用jsch建立与远程服务器的连接并与它们进行交互,但您必须在此基础上实现自己的SCP逻辑。

您可以找到SCP协议here的说明。对于您的用例,您可以执行以下操作:

  1. 打开与源主机的Jsch会话。
  2. 在源主机上打开一个exec通道,调用scp发送源文件。
  3. 打开与目标主机的jsch会话。
  4. 在目标主机上打开一个exec通道,调用scp接收文件。
  5. 从源通道读取文件数据并将其写入目标通道。
  6. 话虽如此,Jsch 支持SFTP,而SFTP通常是SCP的优秀协议。您应该考虑使用SFTP来代替SCP。