Трябва да свържете MySQL към обвързания порт на препращането. т.е. към 2222.
Или още по-семантично правилно, използвайте portFwld.BoundPort
. Еквивалентно използвайте portFwld.BoundHost
.
DBConnect dbConnect = new DBConnect(portFwld.BoundHost, "database", "username", "password", portFwld.BoundPort);
Също така имайте предвид, че има по-голям смисъл да се отнася към MySQL хоста като "localhost", а не като "example.com", тъй като името на хоста се разрешава от страната на сървъра. А когато сте от страната на сървъра, обикновено няма да се свържете с „example.com“, а с „localhost“.
var portFwld = new ForwardedPortLocal(IPAddress.Loopback.ToString(), 2222, "localhost", 3306);
И разбира се, трябва да поддържате SSH сесията отворена, докато имате нужда от тунела. Така че трябва да се свържете с DB в рамките на using
блокиране:
using (var client = new SshClient(connectionInfo))
{
...
client.Connect();
...
portFwld.Start();
...
DBConnect dbConnect = new DBConnect(portFwld.BoundHost, "database", "username", "password", portFwld.BoundPort);
}