有人可以帮我解决如何使用libcurl PutFile方法的问题 - 用户名 - 私钥 - 公钥 - sftp
尝试浏览libcurl示例,但遗憾的是这是最相似的示例https://curl.haxx.se/libcurl/c/usercertinmem.html
答案 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 documentation或CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
代替CURLOPT_SSH_KNOWNHOSTS
。