通过使用C#与MySQL数据库的SSH连接,我获得了使用此库进行连接的链接.
这是图书馆的LINK,你会发现这很有趣,因为你不需要手动打开SSH频道.
这是一个非常详细的库,有很多功能,但我想要做的很简单.我只想在每次要写入数据库时打开SSH通道.
当我在搜索提供的源代码时,我找到了可以在TestSshCommand.cs中找到的代码的这一部分,我想我可以将这部分用于我的连接但是我需要你的帮助才能使它工作,因为我有我的连接字符串我不知道如何连接所有它.
码:
public void Test_Execute_SingleCommand()
{
using (var client = new SshClient(Resources.HOST,Resources.USERNAME,Resources.PASSWORD))
{
client.Connect();
var result = ExecuteTestCommand(client);
client.Disconnect();
Assert.IsTrue(result);
}
我连接到非SSH通道的代码是:
con.ConnectionString = ConfigurationManager.ConnectionStrings["Con2"].ConnectionString;
con.Open();
cmd = new MysqLCommand("SELECT COUNT(*) FROM " + ConfigSettings.ReadSetting("main"),con);
//...... more of the code
那么如何将此代码与上面的代码结合起来,以便它可以先打开一个SSH通道然后执行我的查询?
还有一个想法我在引用中添加.dll文件,我必须说没有任何导入工作.那么有人可以下载库并尝试这个简单的代码来查看引用是否适用于您的项目,以便每个人(很多)可以为他们未来的项目提供有效的解决方案?
编辑:
这是我以后尝试做的代码.我的SSH连接现在只需将两者结合起来就可以了.
问题是我需要在我的电脑上本地拥有一个数据库,并且需要连接到服务器.因此,端口转发将不起作用,因为somone在论坛上说我无法移植,而MysqL已经有端口用于运行
using (var client = new SshClient("cpanel****","******","******"))
{
client.Connect();
con = new MysqLConnection(GetConnectionString());
con.Open();
cmd = new MysqLCommand(String.Format("insert into {0} values (null,?Parname,?Parname2,?Parname3,?Parname4,?Parname5,?Parname6,?Parname7);",ConfigSettings.ReadSetting("main")),con);
cmd.Parameters.Add("?Parname",MysqLDbType.Double).Value = Math.Round(deciLat,5);
// ... more parameters
cmd.ExecuteNonQuery();
client.Disconnect();
}
基本上建立一个SSH连接,侦听localhost上的端口3306并将其转发到MysqL数据库服务器……
在MysqL数据库的连接字符串中,您需要将部分服务器= …更改为server = localhost,而SSH连接需要转到MysqL数据库服务器的IP.
如果您无法转发端口3306,您可以使用任何您想要的端口但是您需要更改另外的端口=连接字符串的一部分…有关具有不同端口的连接字符串的示例,请参阅here …仍然是SSH连接目标3306但在这种情况下侦听localhost上的不同端口…
下面是一些带有源代码的工作示例(虽然不使用SSH.NET,因为我不使用SSH.NET但是这应该让你开始使用IMO):
> http://georgelantz.com/2007/09/10/access-mysql-through-ssh-tunnel-in-a-windows-net-application/
> http://www.howtogeek.com/howto/ubuntu/access-your-mysql-server-remotely-over-ssh/(这只是如何从命令行使用本地SSH客户端进行设置的一个选项)