Подскажите что делаю не так!?
Вроде все по примеру, а не выходит каменный цветок на libssh2_userauth_publickey_fromfile выпадает с ошибкой -7
при этом libssh2_userauth_list возвращает publickey
int sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock == -1)
{
cerr << "Ошибка открытия сокета\n";
return false;
}
struct sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(22);
sin.sin_addr.s_addr = inet_addr("ip удаленного сервера");
if(sin.sin_addr.s_addr == INADDR_NONE)
{
cerr << "Невервый адрес\n";
return false;
}
if(connect(sock, (struct sockaddr*)(&sin), sizeof(struct sockaddr_in)) != 0)
{
cerr << "Ошибка соединения с сокетом\n";
return false;
}
LIBSSH2_SESSION * session = libssh2_session_init();
if (!session)
{
cerr << "Ошибка инициализации SSH сессии\n";
return false;
}
int ret;
if (ret = libssh2_session_startup(session, sock))
{
cerr << "Ошибка запуска SSH сессии " << ret << endl;
return false;
}
cout << libssh2_userauth_list(session, "wolverin", strlen("wolverin")) << endl;
if(ret = libssh2_userauth_publickey_fromfile(session, "wolverin", "/home/wolverin/.ssh/id_rsa.pub", "/home/wolverin/.ssh/id_rsa", ""))
{
cerr << "Ошибка аутентификации " << ret << endl;
libssh2_session_disconnect(session, "Client disconnecting normally WTF");
libssh2_session_free(session);
close(sock);
return false;
}
LIBSSH2_CHANNEL * channel = libssh2_channel_direct_tcpip_ex(session, "ip удаленного сервера", 5550, "127.0.0.1", 5552);
if (!channel)
{
cerr << "Ошибка создания тунеля\n";
libssh2_session_disconnect(session, "Client disconnecting normally");
libssh2_session_free(session);
close(sock);
return false;
}