Я работаю в команде, разрабатывающей программное обеспечение, включающее SSH с архитектурой клиент-сервер. Я пишу SSH-сервер, тестируя его на локальной машине перед развертыванием на удаленном сервере, используя C API libssh. Сервер строится и связывается нормально, но при запуске в функции принятия возникает ошибка Не удалось создать BIO. Ниже мой код сервера
unsigned int port = xxxx;
int log_func = SSH_LOG_PROTOCOL;
int rc;
static const char * dsakey = "rservd_dsa_file_key";
static const char * rsakey = "rservd_rsa_file_key";
ssh_init();
ssh_bind sshbind = ssh_bind_new();
ssh_session session = ssh_new();
const char * hostname = "127.0.0.1";
ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_BINDADDR, hostname);
ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_BINDPORT, &port);
ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_DSAKEY, dsakey);
ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_LOG_VERBOSITY, &log_func);
ssh_bind_options_set(sshbind, SSH_BIND_OPTIONS_RSAKEY, rsakey);
if(ssh_bind_listen(sshbind)<0)
{
fprintf(stderr, "failed to listen at port %s\n", ssh_get_error(sshbind));
exit(-1);
}
rc = ssh_bind_accept(sshbind, session);
if(rc == SSH_ERROR)
{
fprintf(stderr, "Error in accepting a connection : %s\n", ssh_get_error(sshbind));
exit(-1);
}
ssh_bind_free(sshbind);
ssh_free(session);
Погуглив, я узнал, что BIO как-то связан с SSL, но я не очень в этом уверен. Сообщество libssh не такое большое, поэтому примеров очень мало и они не такие понятные, как хотелось бы. Итак, что может быть причиной этой ошибки и что я могу сделать, чтобы исправить это? К вашему сведению, это libssh 0.5.0