Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SSH encapsulando uma conexão MySQL usando C #


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