在我的场景中,我试图从Local App Server -> Middle Server (DMZ) -> Client Server
我需要将文件从Local App Server
移到Client Server
然后再移回。
所以我的问题是最广泛使用的标准是什么?
我目前正在使用WinSCP通过SFTP连接Middle Server
,然后在Middle Server
上调用命令下载文件并将文件上传到Client Server
。我不是真的喜欢这个,因为我觉得它很容易出错,因为我手动输入命令,而不是使用WinSCP的库上传和下载。当我尝试使用命令列出Client Server
上的所有文件时,它也会让我陷入困境,因为该函数返回void
我看过SSH.NET这似乎更广泛使用,但我无法看到任何真正的方式与该库执行“双跃点”。
答案 0 :(得分:1)
使用WinSCP .NET assembly,很简单:
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = "example.com",
UserName = "username",
Password = "password",
SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx...",
};
sessionOptions.AddRawSettings("Tunnel", "1");
sessionOptions.AddRawSettings("TunnelHostName", "tunnel.example.com");
sessionOptions.AddRawSettings("TunnelUserName", "username");
sessionOptions.AddRawSettings("TunnelPasswordPlain", "password");
sessionOptions.AddRawSettings("TunnelHostKey", "ssh-rsa 2048 xx:xx:xx:xx...");
using (Session session = new Session())
{
session.Open(sessionOptions);
// Your code
}
WinSCP GUI可以generate a code template to connect through tunnel,如上所述(TunnelHostKey
除外)。
使用SSH.NET,您可以通过以下方式明确实现端口转发:
举个例子,请参阅Connection to MySQL from .NET using SSH.NET Library。
另一个hackish解决方案是在" Middle Server"上执行ssh
。促进第二次"跳"。