.NET SSH переадресация портов - PullRequest
9 голосов
/ 14 мая 2010

Я пытаюсь встроить переадресацию порта SSH в приложение .NET, которое я пишу.

Я пытался использовать sharpSSH , но он требует от пользователя каждый раз вводить свой пароль, а я этого не хочу. Я собираюсь обработать хранение пароля.

Я скачал Гранадос , но документации для него практически нет. Как выполнить переадресацию портов с помощью Granados или любой другой бесплатной SSH библиотеки для .NET?

Ответы [ 5 ]

13 голосов
/ 15 июня 2012

Библиотека SSH.NET - это простой способ добиться этого:

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();
}
5 голосов
/ 25 мая 2010

Если вы настроили ключ DSA на SSH-сервере удаленно, вы можете сохранить ключ для пользователя (сделать это как разовое), а затем сохранить ключ на сервере как авторизованный пользователь.

4 голосов
/ 19 января 2012

Эти альтернативы C # все получены из Java JCraft Jsch :

  1. sharpSSH (неактивен с января 2010 г.) / страница автора / статья
  2. DotNetSSH (неактивен с июня 2010 г.)
  3. Библиотека SSH.NET (действует с января 2012 г.)
  4. Nsch (сгенерировано / обновлено с Jsch февраль 2012 г.)

Страница продукта Granados связана с проектом Poderosa , который включает в себя плагин PortForwarding . Исходный код для файлов channel.cs и connectionmanager.cs там, по-видимому, реализует переадресацию портов. См. Этот ответ для рекомендации .

Nsch представляется скрытым драгоценным камнем в MonoDevelop NGit ; в основном автоматически конвертируется ( фоновая информация ) из Jsch.

Дальнейшие исследования в феврале 2011 г. Кшиштоф Ковальчик из Суматры PDF.

0 голосов
/ 14 августа 2017

Хотя плохо документировано - или, по крайней мере, документация не позволяет мне - кажется, что он способен обрабатывать SSH-соединения, включая передачу файлов и переадресацию портов: https://github.com/sshnet/SSH.NET

0 голосов
/ 11 марта 2014

Вот метод без продвижения любого из этих parameters: (полностью автоматическая переадресация портов) с использованием SharpSSH

(пользователь, хост, LPORT, RHOST, Rport, DSA-ключ-подтверждение пароля)

    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)
...