Devi connettere MySQL alla porta associata dell'inoltro. Cioè. al 2222.
O ancora più semanticamente corretto, usa portFwld.BoundPort
. Allo stesso modo, usa portFwld.BoundHost
.
DBConnect dbConnect = new DBConnect(portFwld.BoundHost, "database", "username", "password", portFwld.BoundPort);
Si noti inoltre che ha più senso fare riferimento all'host MySQL come "localhost", piuttosto che "example.com", poiché il nome host viene risolto sul lato server. E quando sei sul lato server, in genere non ti connetti a "example.com", ma a un "localhost".
var portFwld = new ForwardedPortLocal(IPAddress.Loopback.ToString(), 2222, "localhost", 3306);
E ovviamente devi mantenere aperta la sessione SSH mentre hai bisogno del tunnel. Quindi devi connetterti al DB all'interno di using
blocco:
using (var client = new SshClient(connectionInfo))
{
...
client.Connect();
...
portFwld.Start();
...
DBConnect dbConnect = new DBConnect(portFwld.BoundHost, "database", "username", "password", portFwld.BoundPort);
}