SSH上的公钥 - 私钥认证的libcurl实现

时间:2017-03-31 09:31:16

标签: c++ c libcurl

  • 创建公钥和私钥
    1. ssh-keygen -t rsa< - 在SSH客户端执行操作
    2. ssh-copy-id @ 注意:创建密钥时没有密码短语

有人可以帮我解决如何使用libcurl PutFile方法的问题 - 用户名 - 私钥 - 公钥 - sftp

尝试浏览libcurl示例,但遗憾的是这是最相似的示例https://curl.haxx.se/libcurl/c/usercertinmem.html

1 个答案:

答案 0 :(得分:2)

忘记usercertinmem.c,只需取repl.it并根据需要添加SSH选项。

这样的事情:

    curl_easy_setopt(curl, CURLOPT_URL, "sftp://username@host/path/file");

    curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
    curl_easy_setopt(curl, CURLOPT_READDATA, fd);
    curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)file_size);

    curl_easy_setopt(curl, CURLOPT_SSH_AUTH_TYPES, CURLSSH_AUTH_PUBLICKEY);
    curl_easy_setopt(curl, CURLOPT_SSH_PUBLIC_KEYFILE, pubkey_filename);
    curl_easy_setopt(curl, CURLOPT_SSH_PRIVATE_KEYFILE, privkey_filename);
    curl_easy_setopt(curl, CURLOPT_KEYPASSWD, "");
    curl_easy_setopt(curl, CURLOPT_SSH_HOST_PUBLIC_KEY_MD5, known_host_sign);

    res = curl_easy_perform(curl);

您可以在fileupload.c中了解这些特定于SSH的选项和其他选项。

您可以使用options documentationCURLOPT_SSH_HOST_PUBLIC_KEY_MD5代替CURLOPT_SSH_KNOWNHOSTS