Mysql
 sql >> Database >  >> RDS >> Mysql

Tunneling SSH di una connessione MySQL utilizzando C#

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);
}