Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET SSH端口转发_C#_.net_Networking_Ssh_Portforwarding - Fatal编程技术网

C# .NET SSH端口转发

C# .NET SSH端口转发,c#,.net,networking,ssh,portforwarding,C#,.net,Networking,Ssh,Portforwarding,我正在尝试将SSH端口转发构建到我正在编写的.NET应用程序中 我试过使用,但每次都需要用户输入密码,我不希望这样。我将负责存储密码 我已经下载了,但是基本上没有相关的文档。如何使用Granados或任何其他免费的SSH库来完成端口转发?如果在SSH服务器上远程设置DSA密钥,则可以为用户保存密钥(一次性执行此操作)然后将密钥作为授权用户保存在服务器上。这些C#替代方案都源自JCraft的Java: (自2010年1月起停用)// (自2010年6月起停用) (自2012年1月起生效) (从20

我正在尝试将SSH端口转发构建到我正在编写的.NET应用程序中

我试过使用,但每次都需要用户输入密码,我不希望这样。我将负责存储密码


我已经下载了,但是基本上没有相关的文档。如何使用Granados或任何其他免费的SSH库来完成端口转发?

如果在SSH服务器上远程设置DSA密钥,则可以为用户保存密钥(一次性执行此操作)然后将密钥作为授权用户保存在服务器上。

这些C#替代方案都源自JCraft的Java:

  • (自2010年1月起停用)//
  • (自2010年6月起停用)
  • (自2012年1月起生效)
  • (从2012年2月Jsch生成/更新)
  • Granados链接到项目,其中包括一个。其中的和文件似乎实现了端口转发。看看这个答案

    似乎是Monodevel的一块隐藏的宝石;它是来自Jsch的()

    2011年2月,苏门答腊省政府发布了PDF。

    实现这一目标的简单方法是:

    using (var client = new SshClient("client.net", "user", "password"))
    {
        client.Connect();
    
        var port = new ForwardedPortLocal("localhost", 10000, "remote.net", 80);
        client.AddForwardedPort(port);
    
        port.Exception += delegate(object sender, ExceptionEventArgs e)
        {
            Console.WriteLine(e.Exception.ToString());
        };
        port.Start();
    
        // ... hold the port open ... //
    
        port.Stop();
        client.Disconnect();
    }
    

    以下是一种不提升任何
    参数的方法:
    (全自动端口转发)使用

    (用户、主机、Lport、Rhost、Rport、DSA密钥确认、密码)


    尽管文档记录得很差,或者至少文档让我无法理解,但这似乎能够处理SSH连接,包括文件传输和端口转发:

    这是旧的,我可能得不到答案,但是client.net服务器是否运行SSH服务器?远程.net是什么?对localhost:1000的任何请求都将发送到client.net,然后client.net将请求转发到远程.net:80?是这样吗?或者它会直接从本地主机转到远程.net吗?是的,client.net是SSH服务器。远程.net:80是您希望通过SSH隧道连接到的计算机。正如您所说的,任何对localhost:10000的请求都将通过SSH发送到client.net,后者随后将请求转发到远程.net:80。因此,localhost和remote.net之间没有直接连接。实际上,该代码不起作用,由于某些原因,SSH.net无法正确解析localhost,127.0.0.1似乎可以正常工作;虽然这与我的网络配置有关,但无论如何,使用localhost并不可靠。这里有关于如何配置.net ssh服务器的教程吗?我一直在尝试让它正常工作,看起来您可以将
    localhost
    关闭端口
    ForwardedPortLocal
    调用-缺点是任何IP都可以连接到端口10000上的SSH服务器,并将其转发到
    remote.net:80
    。如果在您的情况下这不是一个安全问题,那么您就没事了,否则您需要计算出您的本地主机名或IP,并将其替换为本地主机名。对于反向连接和指纹,使用密钥是非常危险的
        Dim JJ As Tamir.SharpSsh.jsch.JSch = New Tamir.SharpSsh.jsch.JSch()
        Dim sess As Tamir.SharpSsh.jsch.Session = JJ.getSession("user", "remoteadd.dydns.com")
        Dim conf As Hashtable = New Hashtable()
        conf.Add("StrictHostKeyChecking", "no")
        sess.setConfig(conf)
        sess.setPassword("password")
        sess.connect()
        sess.setPortForwardingR(45, "127.0.0.1", 256)