2012-05-29 13 views
6

Jak mogę połączyć się z bazą danych MySQL koryta C#,Jak połączyć się z MySQL z C# przez SSH

To jest mój ciąg połączenia teraz:

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

Jak umieścić SSH ciąg w tej formie jako to musi być coś takiego:

SSH hosta, SSH Nazwa użytkownika, hasło SSH, Mysql hosta, MySQL Nazwa użytkownika, hasło Mysql, Port

+1

byłbym skłonny do tworzenia proxy SSH/do przodu * najpierw * a potem po prostu użyć tego ... –

+0

pewien, daj mi trochę więcej informacji jak to jest wykonane –

+0

spojrzeć na [ 'plink'] (http://linux.die.net/man/1/plink) program wchodzący w skład pakietu Putty. Być może nie jest to najbardziej eleganckie, ale powinno działać. Przydaje się tu parametr '-L' (forward a local port). Poświadczenia mogą być dostarczane na wiele sposobów. Polecam korzystanie z PKI. –

Odpowiedz

5

Nie sądzę, że MySql i MySqlClient obsługują takie rzeczy. Ciąg połączenia jest specjalnie dla bazy danych. Będziesz potrzebował klienta SSH, aby połączyć się najpierw z serwerem SSH, a następnie znaleźć sposób na przekierowanie połączenia Sql przez ten tunel.

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

Nie sądzę, istnieje biblioteka Microsoft .Net do obsługi połączeń SSH, ale nie jest to projekt open source na kodzie Plex, które mogą pomóc.

http://sshnet.codeplex.com/

+0

+1 Nie wiedziałem o istnieniu sshnet. Dobrze wiedzieć . – aleroot

+1

fajna biblioteka, spróbuję, żeby zobaczyć, jak to działa –

1

nie można określić proxy SSH SSH lub poświadczenia W łańcuchu połączenia musisz najpierw ustanowić połączenie SSH, a następnie użyć standardowego ciągu połączenia takiego, jaki masz w swoim pytaniu.

Aby ustanowić połączenie SSH przez C#, można użyć biblioteki takiej jak sharpSsh.

+0

Masz przykład, w jaki sposób można ustanowić połączenie SSH [first]? –

+0

Dziękuję za odpowiedź, ale problem polega na ustanowieniu tego rodzaju połączenia. Jak powiedział pst, potrzebuję użyć szpachli. Ale jest to nieco skomplikowane. –

+0

Możesz użyć na przykład 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(); 
Powiązane problemy