Você precisa conectar o MySQL à porta vinculada do encaminhamento. Ou seja para o 2222.
Ou ainda mais semanticamente correto, use
portFwld.BoundPort
. De forma equivalente, use portFwld.BoundHost
. DBConnect dbConnect = new DBConnect(portFwld.BoundHost, "database", "username", "password", portFwld.BoundPort);
Observe também que faz mais sentido se referir ao host MySQL como "localhost", em vez de "example.com", pois o nome do host é resolvido no lado do servidor. E quando estiver no lado do servidor, você normalmente não se conectará a "example.com", mas a um "localhost".
var portFwld = new ForwardedPortLocal(IPAddress.Loopback.ToString(), 2222, "localhost", 3306);
E é claro que você precisa manter a sessão SSH aberta enquanto precisa do túnel. Então você tem que se conectar ao banco de dados dentro do
using
quadra:using (var client = new SshClient(connectionInfo))
{
...
client.Connect();
...
portFwld.Start();
...
DBConnect dbConnect = new DBConnect(portFwld.BoundHost, "database", "username", "password", portFwld.BoundPort);
}