1

我正在使用mysql客户端

using MySql.Data.MySqlClient;

我如何在 SSH 隧道上运行连接?


我创建 ssh 连接使用SharpSsh

SshExec exec = new SshExec("host", "user");
exec.Password = "pass";

Console.Write("Connect...");
exec.Connect(22);
Console.WriteLine("OK");
string output = exec.RunCommand("mysql -p pass -u user db -h host;");
if (output == "")
   Console.WriteLine("error");
Console.WriteLine(output);

但是为什么我写了很多代码可以,通过客户端可以立即建立ssh连接,对吧?

请帮忙 :)

4

1 回答 1

0

您应该只使用端口转发,而不是通过 SSH 打开 shell。按照SharpSSH 主页上的端口转发示例进行操作。根本不需要mysql在远程服务器上运行命令。

示例中的魔术线是这样的:

session.setPortForwardingL(lport, rhost, rport);

它将创建一个从lport本地机器上的端口到端口rport的隧道rhost。隧道启动后,只需使用localhostlportMySqlClient连接字符串即可。即使您连接到本地机器,连接也会通过隧道转发到远程端。

于 2012-08-07T17:43:40.497 回答