文件使用SSH.Net从一个SFTP位置传输到另一个SFTP位置

时间:2017-03-06 09:23:59

标签: .net c#-3.0

我们需要将文件从一个SFTP Locaton移动到另一个SFTP位置,因此可以使用SSH.NET第三方组件。

1 个答案:

答案 0 :(得分:1)

简单的答案是,SSH.NET中没有 native 工具可以同时连接到两台服务器并让它们相互通信。为了做到你要求的最佳行动方案是:

  1. 将文件从Server-1下载到本地计算机
  2. 将文件从本地上传到Server-2
  3. 从Server-1
  4. 删除文件
  5. 从本地计算机删除文件
  6. 现在不能说它无法完成。如果您的第一个远程服务器允许您通过SSH执行命令,并且该服务器还具有对第二个服务器的必要访问权限(权限,连接,私钥,如果适用),您理论上可以执行原始命令以使第一个服务器连接到第二个。

    我不是这些命令的SSH专家。但是,使用SshClient而不是SftpClient可以为SSH执行任意命令 。您可以通过SSH连接,然后使用RunCommand上的CreateCommand / SshClient。以下示例创建一个" tmp / uploadtest"服务器上的目录并给它" rw"访问。然后它会检查命令的状态。

    using (var sshclient = new SshClient(...)){
                sshclient.Connect();
                using(var cmd = sshclient.CreateCommand("mkdir -p /tmp/uploadtest && chmod +rw /tmp/uploadtest")){
                    cmd.Execute();
                    Console.WriteLine("Command>" + cmd.CommandText);
                    Console.WriteLine("Return Value = {0}", cmd.ExitStatus);
                }
                sshclient.Disconnect();
    }
    

    (从this gist借来的代码)

    您可以通过使用适当的参数调用CreateCommand来初始化从Remote-1到Remote-2的ssh连接然后以这种方式传输文件来利用这一点。

    除非你被要求,否则我会选择"简单的方式"