在我的情况下,我试图从 Local App Server -> Middle Server (DMZ) -> Client Server
我需要将文件从Local App Server
移至,Client Server
然后移回。
所以我的问题是,最广泛使用的标准是什么?
我目前正在使用WinSCPMiddle Server
通过SFTP连接到,然后在上调用命令Middle Server
以将文件下载和上传到Client Server
。我并不真的喜欢它,因为我手动输入命令而不是使用WinSCP的库上载和下载时,由于它容易出错,因此我觉得它很容易出错。当我尝试Client Server
使用命令列出上的所有文件时,这也会让我陷入困境,因为该函数返回void
我看过SSH.NET,它似乎使用更广泛,但是我也看不到使用该库执行“双跳”的任何实际方法。
使用WinSCP .NET程序集,很容易:
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = "example.com",
UserName = "username",
Password = "password",
SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx...=",
};
sessionOptions.AddRawSettings("Tunnel", "1");
sessionOptions.AddRawSettings("TunnelHostName", "tunnel.example.com");
sessionOptions.AddRawSettings("TunnelUserName", "username");
sessionOptions.AddRawSettings("TunnelPasswordPlain", "password");
sessionOptions.AddRawSettings("TunnelHostKey", "ssh-rsa 2048 xxxxxxxxxxx...=");
using (Session session = new Session())
{
session.Open(sessionOptions);
// Your code
}
WinSCP GUI可以为您生成一个代码模板以通过隧道连接(如上所示TunnelHostKey
)(除外)。
使用SSH.NET,您可以通过以下方式显式实现端口转发:
有关示例,请参阅使用SSH.NET库从.NET连接到MySQL。
另一个骇人听闻的解决方案是ssh
在“中间服务器”上执行,以促进第二次“跳跃”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句