2013-08-29 7 views
8

Ja próbuje użyć SSH.NET stworzyć tunel od localhost:3306 do portu 3306 na zdalnym komputerze:Tworzenie przekazane portu w tunelu SSH

PrivateKeyFile file = new PrivateKeyFile(@" .. path to private key .. "); 
    using (var client = new SshClient(" .. remote server .. ", "ubuntu", file)) 
    { 

     client.Connect(); 
     var port = new ForwardedPortLocal(3306, "localhost", 3306); 
     client.AddForwardedPort(port); 
     port.Start(); 

      // breakpoint set within the code here 

     client.Disconnect(); 
    } 

Gdy punkt przerwania jest trafiony, client.IsConnected powraca true, ale telnet localhost 3306 nie łączy się. Jeśli utworzę połączenie za pomocą Putty i skonfiguruję tam ten sam tunel, to się uda. Co przeoczyłem?

+0

Czy otrzymujesz specjalne ostrzeżenie dotyczące aplikacji telnet? Czy to się zamyka? Dane połączenia binarnego mogą nie być wyświetlane ... –

+0

Zawiesza się, nie można nawiązać połączenia. Podczas korzystania z Putty otrzymuję ciąg danych. –

+0

Spróbuj [tego linku] (http://sshnet.codeplex.com/discussions/348423): Myślę, że problemem jest odłączenie klienta. A jeśli przełamiesz pomiędzy 'Start' i' Disconnect' możesz także zatrzymać przekazywanie. –

Odpowiedz

9

Zmieniając parametry ForwardedPortLocal do:

var port = new ForwardedPortLocal("localhost", 3306, "localhost", 3306); 

(aby to wyraźny interfejs, który miałem do wiązania) i dodając następujący kod w tuż przed port.Start();:

port.RequestReceived += delegate(object sender, PortForwardEventArgs e) 
    { 
     Console.WriteLine(e.OriginatorHost + ":" + e.OriginatorPort); 
    }; 

I Zauważyłem, że wyjście:

::1:60309 

The e.OriginatorHost część tego była ::1, która jest odpowiednikiem IPv6 localhost; jednak serwer docelowy korzystał z protokołu IPv4. Zmiana parametrów na:

var port = new ForwardedPortLocal("127.0.0.1", 3306, "localhost", 3306); 

zmusił tunel do uruchomienia przez IPv4, a mój kod działał dokładnie tak, jak się spodziewałem.

+0

Sheesh, cieszę się, że znalazłeś to rozwiązanie! Dziękuję za zgłoszenie ... –

+0

Dziękuję bardzo za rozwiązanie. Próbowałem nad tym pracować od wielu godzin. < –

+0

Zobacz moje pytanie, czy twój wysiłek, jak byłem z lokalnym wystąpienie MySQL na komputerze dev :-) http://stackoverflow.com/questions/40592492/ssh-access-using -renci-ssh-to-mysql-server/40606542 # 40606542 –

Powiązane problemy