我正在尝试使用使用 OpenSSH 密钥文件和 SSH.Net 库设置的 SSH 隧道连接到远程 mysql 服务器,如下面的代码部分所示...
try
{
PrivateKeyFile pkfile = new PrivateKeyFile("C:\\Users\\OpenSSHKey", "mypassword");
var client = new SshClient("servername.com", 22, "myusername", pkfile);
client.Connect();
if (client.IsConnected)
{
var local = new ForwardedPortLocal(22, "localhost", 3306);
client.AddForwardedPort(local);
try
{
local.Start();
}
catch (SocketException se)
{
}
string connStr = "server=localhost;user=mysql_username;database=database_name;port=3306;password=MyDBPassword;";
MySqlConnection sql = new MySqlConnection(connStr);
sql.Ping();
try
{
sql.Open();
}
catch (MySqlException se)
{
}
}
}
catch(Exception e)
{
}
隧道肯定已经建立,因为它在 sql.Open() 调用上抛出以下错误“无法连接到任何指定的 MySQL 主机”...
我确定数据库位于名为 mysername 的服务器上,因为我可以使用 putty 或 workbench 使用 MYSQL 连接字符串中使用的凭据连接到它......我希望有人能提供帮助