Xin chào Tôi đang phát triển một ứng dụng thử nghiệm để hiểu cách làm đường hầm SSH để kết nối với Cơ sở dữ liệu MySQL trong C++.SSH Tunneling tới MySQL bằng C++
Tôi đang sử dụng thư viện libssh2 và tôi đang sử dụng ví dụ từ https://www.libssh2.org/examples/direct_tcpip.html nhưng tôi không chắc chắn 100% liệu đây có phải là điều chính xác để sử dụng hay không.
tôi đã khá nhiều sao chép ví dụ nhưng khi kết nối với MySQL trên mysql ổ cắm của tôi ném
Errro 2013 (HY000): Lost connection to mysql server at 'reading communication packet', system error: 0
Khi tôi kết nối với mysql sử dụng mysql -p -uroot -P2222 ứng dụng của tôi đọc dữ liệu trên kênh sử dụng như sau:
int len = libssh2_channel_read(channel, buf, sizeof(len));
và buf chứa SSH-2.0-
và sau đó điều này được ghi vào ổ cắm chuyển tiếp như sau:
wr = 0;
while (wr < len)
{
i = send(forward_socket, buf + wr, len - wr, 0);
if (i <= 0)
{
perror("write");
return EXIT_FAILURE;
}
wr += i;
}
Ngay sau khi gửi xong, tôi ngay lập tức nhận được lỗi mysql. Tôi cho rằng đó là bởi vì tôi đang gửi SSH-2.0- tới MySQL mà MySQL không mong đợi vì vậy nó đóng kết nối nhưng tôi không thể thấy có gì sai, và tôi không thể tìm thấy chắc chắn hay không libssh2 direct_tcpip là chính xác điều cần sử dụng.
Cảm ơn bạn đã trợ giúp bạn có thể cung cấp.
Có một chủ đề tương tự tại đây http://stackoverflow.com/questions/21091850/error-2013-hy000-lost-connection-to-mysql-server-at-reading-authorization-pa – Misgevolution
Điều đó không thực sự liên quan, có cùng một lỗi của nó nhưng đó là để làm với cấu hình MySQL/mạng không C + + lập trình tạo một đường hầm SSH đó là những gì tôi đang cố gắng để làm – Boardy
Chờ đợi những gì là nó cố gắng của bạn để làm từ đầu. SSH Tunneling là một ổ cắm mà bạn sử dụng đường hầm Client port '8282' đến Server' 3306' một khi đã thiết lập máy khách MySQL của bạn sau đó có thể sử dụng 'localhost: 8282' trên máy khách của bạn EG MySQL Workbench để kết nối với' localhost: 8282' và nó sẽ kết nối với máy chủ của bạn trên cổng '3306' –