Как подключиться к MySQL из C # через SSH

Как я могу подключиться к базе данных MySQL через C #,

Это моя строка подключения сейчас:

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

Как поместить строку SSH в эту форму, как это должно быть что-то вроде:

Имя хоста SSH, Имя пользователя SSH, Пароль SSH, Имя хоста Mysql, Имя пользователя Mysql, Пароль Mysql, Порт

 user123_45629 мая 2012 г., 23:23
@ pst да ты был первым
 user16639029 мая 2012 г., 23:16
Я хотел бы создать SSH-прокси / forwardпервы а потом просто используй это ...
 user123_45629 мая 2012 г., 23:17
уверен, дай мне больше информации, как это делается
 user16639029 мая 2012 г., 23:18
Посмотри наplink программа, которая входит в состав Putty. Возможно, не самый элегантный, но это должно работать.-Lараметр @ (forward local port) будет здесь интересен. Учетные данные могут быть предоставлены несколькими способами. Я рекомендую использовать PKI.
 user123_45629 мая 2012 г., 23:21
Вау, довольно сложно понять, как работает эта замазка

Ответы на вопрос(4)

Решение Вопроса

что MySql и MySqlClient поддерживают такие вещи. Строка подключения специально для базы данных. Вам понадобится SSH-клиент, чтобы сначала подключиться к SSH-серверу, а затем найти способ маршрутизировать Sql-соединение через этот туннель.

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

, что есть библиотека Microsoft .Net для обработки SSH-соединений, но есть проект с открытым исходным кодом на Code Plex, который мог бы помочь.

http: //sshnet.codeplex.com

 aleroot29 мая 2012 г., 23:26
+ 1 я не знал о существовании sshnet. Хорошо знать
 user123_45629 мая 2012 г., 23:27
хорошая библиотека, попробую посмотреть, как она работает

чения, сначала необходимо установить подключение SSH, а затем использовать стандартную строку подключения, аналогичную той, которая указана в вашем вопросе.

Чтобы установить SSH-соединение через C #, вы можете использовать библиотеку типа SharpSsh .

 user123_45629 мая 2012 г., 23:22
Спасибо за ответ, но проблема заключается в установлении такого рода связи. Как сказал pst, мне нужно использовать шпаклевку. Но это немного сложно
 user16639029 мая 2012 г., 23:22
У вас есть пример того, как может быть установлено SSH-соединение [сначала]?
 aleroot29 мая 2012 г., 23:23
Вы можете использовать, например, sharpSsh

это окончательный код

    PasswordConnectionInfo connectionInfo = new PasswordConnectionInfo("host", "user", "password");
    connectionInfo.Timeout = TimeSpan.FromSeconds(30);
    var client = new SshClient(connectionInfo);
    client.Connect();
    var x = client.IsConnected;
    ForwardedPortLocal portFwld = new ForwardedPortLocal("127.0.0.1"/*your computer ip*/, "127.0.0.1" /*server ip*/, 3306 /*server mysql port*/);
    client.AddForwardedPort(portFwld);
    portFwld.Start();
    //// using Renci.sshNet 
    var connection = new MySqlConnection("server = " + "127.0.0.1" /*you computer ip*/ + "; Database = DataBaseName; UID = ?; PWD =?; Port = " + portFwld.BoundPort /*very important !!*/);
    connection.Open();
    var k = connection.State;

    connection.Clone();
    client.Disconnect();
 ThatTechGuy17 февр. 2019 г., 07:39
Если вы считаете, что предыдущий ответ может нуждаться в некоторых обновлениях, почему бы не отредактировать этот ответ, а не опубликовать новый и не скопировать / вставить?
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();

Ваш ответ на вопрос