libssh:ssh_is_host_known 在没有加密上下文的情况下调用
libssh: ssh_is_host_known called without cryptographic context
我试图使用 libssh 0.7.0 将 SSH 通信包含到我的程序中。我按照教程创建了到远程计算机的简单连接,但遇到了这个错误:
[2016/10/26 16:38:56.280261, 1] ssh_is_server_known: ssh_is_host_known called without cryptographic context
搜索库的源代码及其文档后,我没有找到任何与此 "lack" 密码上下文相关的内容,可以帮助解决问题。
这是我要执行的代码(它是函数的一部分;IP 地址和用户不是实际的):
ssh_session session;
int verbosity = SSH_LOG_PROTOCOL;
int port = 22;
int state;
ssh_init();
session = ssh_new();
if (session == NULL){
printf("Failed to create SSH session\n"); return NULL;
}
ssh_options_set(session, SSH_OPTIONS_HOST, "111.111.111.111");
ssh_options_set(session, SSH_OPTIONS_USER, "user");
ssh_options_set(session, SSH_OPTIONS_LOG_VERBOSITY, &verbosity);
ssh_options_set(session, SSH_OPTIONS_PORT, &port);
state = ssh_is_server_known(session);
if(state != SSH_SERVER_KNOWN_OK){
printf("SSH Server is not known\n");
}
(我试图在不调用 ssh_init()
的情况下执行此部分,但两种情况均发生错误)。
根据tour (tutorial) on official page,您需要先连接到服务器,然后再验证服务器是否已知(服务器需要向您发送其主机密钥)。因此加一个
rc = ssh_connect(my_ssh_session);
if (rc != SSH_OK)
{
fprintf(stderr, "Error connecting to localhost: %s\n",
ssh_get_error(my_ssh_session));
exit(-1);
}
检查前ssh_is_server_known()
。
我试图使用 libssh 0.7.0 将 SSH 通信包含到我的程序中。我按照教程创建了到远程计算机的简单连接,但遇到了这个错误:
[2016/10/26 16:38:56.280261, 1] ssh_is_server_known: ssh_is_host_known called without cryptographic context
搜索库的源代码及其文档后,我没有找到任何与此 "lack" 密码上下文相关的内容,可以帮助解决问题。
这是我要执行的代码(它是函数的一部分;IP 地址和用户不是实际的):
ssh_session session;
int verbosity = SSH_LOG_PROTOCOL;
int port = 22;
int state;
ssh_init();
session = ssh_new();
if (session == NULL){
printf("Failed to create SSH session\n"); return NULL;
}
ssh_options_set(session, SSH_OPTIONS_HOST, "111.111.111.111");
ssh_options_set(session, SSH_OPTIONS_USER, "user");
ssh_options_set(session, SSH_OPTIONS_LOG_VERBOSITY, &verbosity);
ssh_options_set(session, SSH_OPTIONS_PORT, &port);
state = ssh_is_server_known(session);
if(state != SSH_SERVER_KNOWN_OK){
printf("SSH Server is not known\n");
}
(我试图在不调用 ssh_init()
的情况下执行此部分,但两种情况均发生错误)。
根据tour (tutorial) on official page,您需要先连接到服务器,然后再验证服务器是否已知(服务器需要向您发送其主机密钥)。因此加一个
rc = ssh_connect(my_ssh_session);
if (rc != SSH_OK)
{
fprintf(stderr, "Error connecting to localhost: %s\n",
ssh_get_error(my_ssh_session));
exit(-1);
}
检查前ssh_is_server_known()
。