Ich versuche, SSH.NET zu verwenden, um einen Tunnel von localhost:3306
auf Port 3306 auf einem Remote-Rechner zu erstellen:
Wenn der Haltepunkt erreicht wird, gibt client.IsConnected
true
zurück, aber telnet localhost 3306
verbindet sich nicht. Wenn ich stattdessen die Verbindung mit Putty erstelle und dort denselben Tunnel einrichte, ist es erfolgreich. Was habe ich verpasst?
Durch Ändern der Parameter von ForwardedPortLocal zu:
%Vor% (um zu verdeutlichen, an welche Schnittstelle ich gebunden habe) und den folgenden Code direkt vor port.Start();
einfügen:
Ich habe festgestellt, dass folgendes ausgegeben wird:
%Vor% Der e.OriginatorHost
-Teil davon war ::1
, was das IPv6-Äquivalent von localhost
ist; Der Zielserver verwendete jedoch IPv4. Ändern der Parameter zu:
zwang den Tunnel dazu, stattdessen über IPv4 zu laufen, und mein Code funktionierte dann genau so, wie ich es erwartet hatte.
Nachdem ich das gleiche Problem gefunden und analysiert habe, und wenn ich zu dem Schluss gekommen bin, dass es sich um einen Bug handelt (obwohl es als fraglich betrachtet werden kann, überrascht das Verhalten die Benutzer der SSH.NET API).
Also habe ich es auf Unerwartetes Verhalten (alias Bug) auf lokalem Tunnel gemeldet · Problem # 117 · sshnet / SSH. NET · GitHub .
Bis zur Behebung der Problemumgehung in c # - Erstellen eines weitergeleiteten Ports in einem SSH-Tunnel - Stack Overflow funktioniert.
Tags und Links c# ssh portforwarding ssh.net