gpt4 book ai didi

c# - 如何在.NET中通过SFTP/SSH执行 “double hop”?

转载 作者:行者123 更新时间:2023-12-02 14:30:38 25 4
gpt4 key购买 nike

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

最佳答案

使用WinSCP .NET assembly,很容易:

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可以像上面的一样为您提供 generate a code template to connect through tunnel( TunnelHostKey除外)。

使用SSH.NET,您可以通过以下方式显式实现端口转发:
  • 打开到“中间服务器”的连接;
  • 创建转发端口;
  • 打开与转发端口的第二个连接。

  • 有关示例,请参见 Connection to MySQL from .NET using SSH.NET Library

    另一个骇人听闻的解决方案是在“中间服务器”上执行 ssh,以促进第二次“跳跃”。

    关于c# - 如何在.NET中通过SFTP/SSH执行 “double hop”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48298460/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com