Подскажите что делаю не так!? Вроде все по примеру, а не выходит каменный цветок на 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 ???
вобщем качнул 1.8.2, собрал на openssl c дебагом - и просто по приватному ключу без публичного заработало
версия в репозитории 1.4.3 КРИВАЯ
впрочем судя по гуглу в 1.8.1 тоже самое
Виртуальный выделенный сервер (VDS) становится отличным выбором
пишу программу, которая рисует сферу, накладывает на нее текстуру земли и та в итоге вращается вокруг своей оси
С клавиатуры через пробел вводится: строка str1, знак операции < > == >= <= != , строка str2
Нужно с помощью кода C++ изменить размер консоли, но как именно это сделать не имею представления, в интернете нашёл что-то system ("mode con cols=x lines=y");Но...
Имеются различные символы, и нужно выводить их в консолиНапример хочу вывести ─╔══╗╔══╦═══╦═══╦но вместо этих символов в консоли...