2012-05-29 24 views
6

¿Cómo se conecta a una base de datos MySQL a través de C#,Cómo conectarse a MySQL desde C# a través de SSH

Ésta es mi cadena de conexión ahora:

connectionString="server=localhost;port=3306;user id=root;Password=*****;database=Data" providerName="MySql.Data.MySqlClient" 

cómo poner la secuencia SSH en esta forma como que tiene que ser algo como:

SSH nombre de host, nombre de usuario SSH, SSH contraseña, nombre de host MySQL, MySQL nombre de usuario, contraseña MySQL, Puerto

+1

estaría tentado para crear un proxy SSH/adelante * * primero y luego sólo tiene que utilizar ... –

+0

seguro, dame un poco más información de cómo se hace que –

+0

Mira la [ 'plink'] (http://linux.die.net/man/1/plink) programa que viene como parte de Putty. Quizás no sea el más elegante, pero debería funcionar. El parámetro '-L' (reenviar un puerto local) será de interés aquí. Las credenciales se pueden suministrar en varios métodos. Recomiendo usar PKI. –

Respuesta

5

No creo que MySql y MySqlClient admitan tal cosa. La cadena de conexión es específicamente para la base de datos. Necesitará un cliente SSH para conectarse primero al servidor SSH y luego encontrar una forma de enrutar la conexión Sql sobre ese túnel.

http://www.howtogeek.com/howto/ubuntu/access-your-mysql-server-remotely-over-ssh/

no creo que hay una biblioteca Microsoft .Net para el manejo de las conexiones SSH, pero hay un proyecto de código abierto en el Código Plex que podría ayudar.

http://sshnet.codeplex.com/

+0

+1 no sabía de existencia de sshnet. Bueno saber . – aleroot

+1

buena biblioteca, voy a intentar eso para ver cómo funciona –

1

no se puede especificar un proxy SSH o credencial SSH s en la cadena de conexión, primero debe establecer la conexión SSH y luego usar una cadena de conexión estándar como la que tiene en su pregunta.

Para establecer una conexión SSH a través de C#, puede utilizar una biblioteca como sharpSsh.

+0

¿Tienes un ejemplo de cómo se puede establecer la conexión SSH [primero]? –

+0

Gracias por su respuesta, pero el problema es establecer ese tipo de conexión. Como dijo pst, necesito usar masilla. Pero es un poco complicado –

+0

Puedes usar por ejemplo sharpSsh – aleroot

1
PasswordConnectionInfo connectionInfo = new PasswordConnectionInfo(hostAdres, hostNaam, wachtwoord); 
connectionInfo.Timeout = TimeSpan.FromSeconds(30); 
client = new SshClient(connectionInfo); 
client.Connect(); 
ForwardedPortLocal portFwld = new ForwardedPortLocal ("127.0.0.1", Convert.ToUInt32(hostpoort), DataBaseServer, Convert.ToUInt32(remotepoort)); client.AddForwardedPort(portFwld); 
portFwld.Start(); 
// using Renci.sshNet 
connection = new MySqlConnection("server = " + "127.0.0.1" + "; Database = database; password = PWD; UID = yourname; Port = 22"); 
connection.Open(); 
Cuestiones relacionadas