Je moet de MySQL verbinden met de gebonden poort van de forwarding. D.w.z. naar de 2222.
Of nog semantisch correcter, gebruik portFwld.BoundPort
. Gebruik op dezelfde manier portFwld.BoundHost
.
DBConnect dbConnect = new DBConnect(portFwld.BoundHost, "database", "username", "password", portFwld.BoundPort);
Merk ook op dat het logischer is om naar de MySQL-host te verwijzen als "localhost", in plaats van naar "example.com", omdat de hostnaam aan de serverzijde wordt opgelost. En aan de serverkant maakt u doorgaans geen verbinding met "example.com", maar met een "localhost".
var portFwld = new ForwardedPortLocal(IPAddress.Loopback.ToString(), 2222, "localhost", 3306);
En natuurlijk moet je de SSH-sessie open houden terwijl je de tunnel nodig hebt. U moet dus verbinding maken met de DB binnen de using
blok:
using (var client = new SshClient(connectionInfo))
{
...
client.Connect();
...
portFwld.Start();
...
DBConnect dbConnect = new DBConnect(portFwld.BoundHost, "database", "username", "password", portFwld.BoundPort);
}