sql >> Base de Datos >  >> RDS >> Mysql

Tunelización SSH de una conexión MySQL usando C#

Tienes que conectar MySQL al puerto enlazado del reenvío. Es decir. al 2222.

O aún más semánticamente correcto, use portFwld.BoundPort . De manera equivalente, use portFwld.BoundHost .

DBConnect dbConnect = new DBConnect(portFwld.BoundHost, "database", "username", "password", portFwld.BoundPort);

También tenga en cuenta que tiene más sentido referirse al host MySQL como "localhost", en lugar de "example.com", ya que el nombre del host se resuelve en el lado del servidor. Y cuando esté del lado del servidor, normalmente no se conectará a "example.com", sino a un "localhost".

var portFwld = new ForwardedPortLocal(IPAddress.Loopback.ToString(), 2222, "localhost", 3306); 

Y, por supuesto, debe mantener abierta la sesión SSH mientras necesita el túnel. Por lo tanto, debe conectarse a la base de datos dentro del using bloque:

using (var client = new SshClient(connectionInfo))
{
    ...
    client.Connect();
    ...
    portFwld.Start();
    ... 
    DBConnect dbConnect = new DBConnect(portFwld.BoundHost, "database", "username", "password", portFwld.BoundPort);
}