Du måste ansluta MySQL till den bundna porten för vidarebefordran. d.v.s. till 2222.
Eller ännu mer semantiskt korrekt, använd portFwld.BoundPort
. På motsvarande sätt, använd portFwld.BoundHost
.
DBConnect dbConnect = new DBConnect(portFwld.BoundHost, "database", "username", "password", portFwld.BoundPort);
Observera också att det är mer meningsfullt att hänvisa till MySQL-värden som "localhost", snarare än "example.com", eftersom värdnamnet är löst på serversidan. Och när du är på serversidan ansluter du vanligtvis inte till "example.com", utan till en "localhost".
var portFwld = new ForwardedPortLocal(IPAddress.Loopback.ToString(), 2222, "localhost", 3306);
Och naturligtvis måste du hålla SSH-sessionen öppen medan du behöver tunneln. Så du måste ansluta till DB inom using
blockera:
using (var client = new SshClient(connectionInfo))
{
...
client.Connect();
...
portFwld.Start();
...
DBConnect dbConnect = new DBConnect(portFwld.BoundHost, "database", "username", "password", portFwld.BoundPort);
}