我正在建立一个包含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
答案 0 :(得分:0)
我通过升级到libssh 0.6.3修复了它,连接工作正常