如何在.NET中通过SFTP / SSH执行“双跳”?

Teimaj

在我的情况下,我试图从 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,它似乎使用更广泛,但是我也看不到使用该库执行“双跳”的任何实际方法。

马丁·普里克里(Martin Prikryl)

使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章