.NET SSH port forwarding

前端 未结 5 963
长发绾君心
长发绾君心 2020-12-28 09:52

I am trying to build in SSH port forwarding into a .NET application that I am writing.

I have tried using sharpSSH, but it requires the user to input their password

相关标签:
5条回答
  • 2020-12-28 10:36

    The SSH.NET library is a simple way to achieve this:

    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();
    }
    
    0 讨论(0)
  • 2020-12-28 10:47

    If you set up an DSA key on the SSH server remotely, you could save a key for the user (do this as a one-time thing) and then save the key on the server as an authorized user.

    0 讨论(0)
  • 2020-12-28 10:48

    Although poorly documented - or at least the documentation eludes me - this seems to be able to handle SSH connections including file transfers and port forwarding: https://github.com/sshnet/SSH.NET

    0 讨论(0)
  • 2020-12-28 10:54

    These C# alternatives are all derived from JCraft's Java Jsch:

    1. sharpSSH (inactive since Jan 2010) / author's page / article
    2. DotNetSSH (inactive since Jun 2010)
    3. SSH.NET Library (active as of Jan 2012)
    4. Nsch (generated/updated from Jsch Feb 2012)

    The Granados product page links to the Poderosa project which includes a PortForwarding plugin. The source code for the channel.cs and connectionmanager.cs files there appear to implement port forwarding. See this answer for a recommendation.

    Nsch appears to be a hidden gem within MonoDevelop's NGit; it is mostly-automatically converted (background info) from Jsch.

    Further research in Feb 2011 by Krzysztof Kowalczyk of Sumatra PDF.

    0 讨论(0)
  • 2020-12-28 10:57

    Here is a method without promoting any of these parameters: (Fully-automated port forwarding) using SharpSSH

    (user,host,Lport,Rhost,Rport,DSA-key-confirmation,Password)

        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)
    
    0 讨论(0)
提交回复
热议问题