libssh2 и LIBSSH2_ERROR_SOCKET_SEND

146
26 декабря 2019, 01:20

Подскажите что делаю не так!? Вроде все по примеру, а не выходит каменный цветок на 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;
}

UPD: дописал в обработку ошибки libssh2_session_last_error, который пишет Unable to send userauth-publickey request

UPD1: может сами ключи в каком то ином виде должны быть нежели их генерирует ssh-keygen ???

Answer 1

вобщем качнул 1.8.2, собрал на openssl c дебагом - и просто по приватному ключу без публичного заработало

версия в репозитории 1.4.3 КРИВАЯ

впрочем судя по гуглу в 1.8.1 тоже самое

READ ALSO
кривой поворот текстуры

кривой поворот текстуры

пишу программу, которая рисует сферу, накладывает на нее текстуру земли и та в итоге вращается вокруг своей оси

146
Проверка истинности выражения

Проверка истинности выражения

С клавиатуры через пробел вводится: строка str1, знак операции < > == >= <= != , строка str2

193
Как изменить размер консоли в C++?

Как изменить размер консоли в C++?

Нужно с помощью кода C++ изменить размер консоли, но как именно это сделать не имею представления, в интернете нашёл что-то system ("mode con cols=x lines=y");Но...

134
Вывод символов в консоли C++

Вывод символов в консоли C++

Имеются различные символы, и нужно выводить их в консолиНапример хочу вывести ─╔══╗╔══╦═══╦═══╦но вместо этих символов в консоли...

131