Announcement

Collapse
No announcement yet.

Datenbankverbindung über SSH Tunnel

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenbankverbindung über SSH Tunnel

    Hallo Forum,
    ich habe ein Problem damit, über einen SSH Tunnel auf eine (nicht mir gehörende) MySQL Datenbank zuzugreifen.

    Meine Voraussetzungen: WIN10 64, VS2015, .NET 4.6.1, Renci.SshNet.dll, MySQLConnetor 6.9.9
    [highlight=vbnet]
    Dim client As Renci.SshNet.SshClient = New Renci.SshNet.SshClient("serveradresse", "username", "passwort")
    client.Connect()

    Dim port As Renci.SshNet.ForwardedPortLocal = New Renci.SshNet.ForwardedPortLocal("localhost", 8883, "serveradresse", 3306)

    client.AddForwardedPort(port)
    port.Start()

    Dim db = New MySQLDatabase(New MySql.Data.MySqlClient.MySqlConnection("Server=loc alhost;Port=8883;Uid=mysqlbenutzername;Pwd=mysqlpa sswort;Database=mysqldatenbank;Integrated Security=true"))
    [/highlight]
    In der letzten Zeile bekomme ich die Fehlermeldung: Message = "Reading from the stream has failed." InnerException {"Es wurde versucht, über das Ende des Datenstroms hinaus zu lesen."}. Der Port hat „isStarted“ und client „isConnected – ForwardedPorts 1“.

    Wenn ich den SSH Tunnel mit HeidiSQL/PuTTY aufbaue, kommt bei „port.Start()“ die Fehlermeldung {"Normalerweise darf jede Socketadresse (Protokoll, Netzwerkadresse oder Anschluss) nur jeweils einmal verwendet werden"} und mit Dim db = New MySQLDatabase… wird eine Connection aufgebaut, die ich auch benutzen kann! Andersherum genauso – also Port steht und HeidiSQL meckert 8883 sei schon in Benutzung und versucht es dann automatisch mit Port 8884. Mit angepasstem ConnectionString (Port 3306) auf eine lokale MySQL Datenbank zuzugreifen ist auch kein Problem.

    Ich habe mein Glück auch schon mit Renci.SshNet.ForwardedPortRemote ({"Unable to connect to any of the specified MySQL hosts."}) und Renci.SshNet.ForwardedPortDynamic versucht. Oder die Ports zu vertauschen, verändern.

    Die pragmatische Lösung mit HeidiSQL den SSH Tunnel aufzubauen und dann im Programm nur noch die DB Connection herzustellen ist funktional, aber nicht schön. Hat jemand eine Idee woran dieses Verhalten liegen kann?
Working...
X