libssh bind_accept错误:无法创建BIO

时间:2015-03-16 08:14:41

标签: c libssh libssl

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

1 个答案:

答案 0 :(得分:0)

我通过升级到libssh 0.6.3修复了它,连接工作正常