【发布时间】:2020-01-18 19:36:48
【问题描述】:
我必须通过外部网络访问具有 IP (1.1.1.1) 的计算机上的 MySQL 数据库。
我用 SSH.NET 创建了一个隧道,但是我无法访问 MySQL 中数据库所在计算机的 IP(1.1.1.1)。
直到公共 IP,隧道似乎工作,但我无法访问计算机 IP (1.1.1.1),因为我不了解 SSH.NET 的工作原理。 使用 PuTTY 输入端口的公共 IP,并在 SSH 隧道部分插入 IP 计算机(1.1.1.1),端口为 3306,它运行良好。 代码是这样的
using (var client = new SshClient("ip public", port, "user", "password"))
{
client.Connect();
if (client.IsConnected)
{
var portForwarded = new ForwardedPortLocal("127.0.0.1",22, "1.1.1.1",3306);
client.AddForwardedPort(portForwarded);
portForwarded.Start();
string db = @"Server=127.0.0.1;Port=3306;Database=xxx;Uid=root;Pwd=xxx;";
{
var mySQLCon = new MySqlConnection(db);
mySQLCon.Open();
if (mySQLCon.State == ConnectionState.Open)
{
MainWindow stx = new MainWindow(db);
stx.ShowDialog();
}
}
}
}
我把参数放在ForwardedPortLocal里面错了吗?
ForwardedPortLocal("127.0.0.1",22, "1.1.1.1",3306);
我想知道我在ForwardedPortLocal 中输入的参数是否正确,或者我在使用 SSH.NET 建立隧道时错在哪里...
【问题讨论】:
-
查看连接字符串:connectionstrings.com/mysql
-
如果 mysql 在服务器 1.1.1.1 上运行,那么你应该在连接字符串中有
Server=1.1.1.1 -
本教程将引导您完成所有步骤:mysqlconnector.net/tutorials/connect-ssh
-
顺便说一句,我希望您实际上并没有使用
1.1.1.1,因为那是 Cloudflare 的公共 DNS 解析器:cloudflare.com/learning/dns/what-is-1.1.1.1
标签: c# mysql ssh tunnel ssh.net