Sie müssen das MySQL mit dem gebundenen Port der Weiterleitung verbinden. Dh bis 2222.
Oder noch semantisch korrekter, verwenden Sie portFwld.BoundPort
. Verwenden Sie entsprechend portFwld.BoundHost
.
DBConnect dbConnect = new DBConnect(portFwld.BoundHost, "database", "username", "password", portFwld.BoundPort);
Beachten Sie auch, dass es sinnvoller ist, den MySQL-Host als „localhost“ statt als „example.com“ zu bezeichnen, da der Hostname serverseitig aufgelöst wird. Und wenn Sie sich auf der Serverseite befinden, verbinden Sie sich normalerweise nicht mit "example.com", sondern mit einem "localhost".
var portFwld = new ForwardedPortLocal(IPAddress.Loopback.ToString(), 2222, "localhost", 3306);
Und natürlich müssen Sie die SSH-Sitzung offen halten, während Sie den Tunnel benötigen. Sie müssen sich also innerhalb des using
mit der DB verbinden blockieren:
using (var client = new SshClient(connectionInfo))
{
...
client.Connect();
...
portFwld.Start();
...
DBConnect dbConnect = new DBConnect(portFwld.BoundHost, "database", "username", "password", portFwld.BoundPort);
}