首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL在c++中的隧道隧道技术

问MySQL在c++中的隧道隧道技术
EN

Stack Overflow用户
提问于 2016-12-15 18:17:53
回答 2查看 1.4K关注 0票数 5

我正在开发一个测试应用程序,以了解如何进行SSH隧道连接到MySQL数据库的C++。

我使用的是libssh2库,我使用的是来自tcpip.html的一个示例,但我不能100%确定这是否正确。

我几乎复制了这个示例,但是当连接到套接字上的MySQL时,MySQL抛出:

Errro 2013 (HY000):与mysql服务器“读取通信包”的连接丢失,系统错误:0

当我使用mysql -uroot -p -P2222连接到mysql时,我的应用程序使用以下方法读取通道上的数据:

int len = libssh2_channel_read(channel, buf, sizeof(len));

并且buf包含SSH-2.0-,然后将其写入转发套接字,如下所示:

代码语言:javascript
复制
wr = 0;
while (wr < len)
{
    i = send(forward_socket, buf + wr, len - wr, 0);
    if (i <= 0)
    {
        perror("write");
        return EXIT_FAILURE;
    }
    wr += i;
}

一旦发送完成,我立即得到mysql错误。我认为这是因为我将SSH-2.0发送到MySQL,而MySQL并没有期望它关闭连接,但我看不出出了什么问题,我也无法确定libssh2 direct_tcpip是否正确使用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-31 00:50:37

最后,设法找出该做什么,与大量的尝试和错误和拔头发管理它。

使用tcpip.html中的示例,但是我用错误的值设置变量。

基本上,在这个例子中

代码语言:javascript
复制
const char *remote_desthost = "localhost"; /* resolved by the server */ 
unsigned int remote_destport = 22;

由于示例中的remote_destport为22,我认为这是SSH连接的详细信息,因此我将其设置为SSH设置。

原来,这就是从SSH会话转发连接的地方,所以我将其更改为

代码语言:javascript
复制
const char *remote_desthost = "localhost"; /* resolved by the server */ 
unsigned int remote_destport = 3306;

所以现在我可以从我的笔记本电脑上运行我的应用程序,它连接到我的web服务器的SSH服务器,然后在我的笔记本上运行在命令中。

mysql -uroot -p -P2222和我通过SSH隧道连接到SSH服务器上的数据库。

票数 3
EN

Stack Overflow用户

发布于 2016-12-22 16:48:57

我想你误解了SSH隧道是什么。

SSH隧道只不过是一个客户端套接字到服务器套接字映射E.G,一个防火墙网络端口。

​

来证明这就是它的工作原理。我使用我的个人web服务器,并连接到一个不允许任何外部连接到它的MySQL服务器,因此只能从本地主机连接。

​

​

若要使用LibSSH2设置SSH隧道,请按照标题下的forwarding.html代码,使用libssh进行直接端口转发。

如果您不想将映射公开到客户端计算机上的端口,则不必手动将数据发送到通道并读取它,但是,如果有任何形式的加密或文本编码与您在通道上的数据与mysql不匹配,则将向其发送无效数据。

因此,一旦您创建了SSH隧道,那么您就可以将它作为到端口的标准网络连接使用,如果您希望在C++中这样做,请使用MySQL C++连接器,并且一旦隧道使用C++连接器创建连接,就可以与服务进行通信。

如果希望允许应用程序通过SSH通道与MySQL对话,而不将其暴露于网络端口,则可能需要处理C++ MySQL连接器的源代码。很多,更多的工作,你认为你会通过整个连接器和任何书写和阅读,通过网络套接字,并取代它的代码,以通过您的SSH隧道通道。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41170816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档