c - libssh:在没有加密上下文的情况下调用 ssh_is_host_known

标签 c ssh cryptography libssh

我试图使用 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

在搜索库的源代码及其文档后,我没有发现任何与这种“缺乏”密码上下文相关的内容可以帮助解决问题。

这是我要执行的代码(它是函数的一部分;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 ,您需要先连接到服务器,然后再验证服务器是否已知(服务器需要向您发送其主机 key )。因此加一个

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() 之前。

关于c - libssh:在没有加密上下文的情况下调用 ssh_is_host_known,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40267037/

相关文章:

c - 我的 Blowfish 算法是 "standard"吗?

c - c中unix_error函数的问题

ios - 在锁定屏幕中使用 "open"命令打开应用程序 (iOS 8)

c - 为什么它显示随机数? C程序读取字符串字母

macos - 为什么我无法使用 ssh 打开应用程序?

ssh - 当 ssh 连接到另一台计算机时我是谁

cryptography - RSA私有(private)指数确定

java - Java BouncyCaSTLe 中的确定性 AES-CTR?

c - 连接请求的输出不是原子的

python - 如何在python中递归计算pi?