我在一个团队中构建一个包含 SSH 和客户端-服务器架构的软件。我正在编写 SSH 服务器,使用 libssh C API 在远程服务器计算机上部署之前在本地计算机上进行测试。服务器构建和链接正常,但在运行时,accept 函数上出现错误could not create 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