我们需要将文件从一个SFTP Locaton移动到另一个SFTP位置,因此可以使用SSH.NET第三方组件。
答案 0 :(得分:1)
简单的答案是,SSH.NET中没有 native 工具可以同时连接到两台服务器并让它们相互通信。为了做到你要求的最佳行动方案是:
现在不能说它无法完成。如果您的第一个远程服务器允许您通过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连接然后以这种方式传输文件来利用这一点。
除非你被要求,否则我会选择"简单的方式"