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

Does Jsch support third party scp file transfer operation?

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

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

您可以找到 SCP 协议的描述 here。对于你的用例,你会做这样的事情:

  1. 打开与源主机的 Jsch 会话。
  2. 在源主机上打开一个 exec 通道,调用 scp 发送源文件。
  3. 打开到目标主机的 jsch 会话。
  4. 在目标主机上打开一个 exec 通道,调用 scp 来接收文件。
  5. 从源通道读取文件数据并写入目标通道

话虽如此,Jsch 确实 支持 SFTP,而且 SFTP 通常是优于 SCP 的协议。您应该考虑使用 SFTP 而不是 SCP 来执行此操作。