【发布时间】:2023-02-08 03:04:07
【问题描述】:
我正在开发一个 C/C++ 应用程序,它使用带有 lib-curl 的 SFTP 协议执行文件传输。但是,我面临一个特定的问题,即需要远程主机两个都公钥和用户密码认证分两步进行。
在这种情况下我应该如何配置 CURLOPT 参数?我目前正在我的应用程序中实现类似的东西:
curl_easy_setopt(curl, CURLOPT_URL, myurl.Str);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &sftpfile);
curl_easy_setopt(curl, CURLOPT_SSH_AUTH_TYPES, CURLSSH_AUTH_ANY);
curl_easy_setopt(curl, CURLOPT_USERNAME, sUser.Str());
curl_easy_setopt(curl, CURLOPT_PASSWORD, "sUserPassword.Str()");
if (!sPrivateKeyFile.IsEmptyString()) {
curl_easy_setopt(curl, CURLOPT_SSH_PRIVATE_KEYFILE, sPrivateKeyFile.Str());
}
if (!sPublicKeyFile.IsEmptyString()) {
curl_easy_setopt(curl, CURLOPT_SSH_PUBLIC_KEYFILE, sPublicKeyFile.Str());
}
if (!sKnownHosts.IsEmptyString()) {
curl_easy_setopt(curl, CURLOPT_SSH_KNOWNHOSTS, sKnownHostsFile.Str());
}
if (!sPassword.IsEmptyString()) {
curl_easy_setopt(curl, CURLOPT_KEYPASSWD, sPassword.Str());
}
#ifdef _CURL_VERBOSE
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
#endif
当我运行我的应用程序时,我注意到 PEM 密钥对已成功读取,并且我收到了 curl failure 67 身份验证消息。
我想知道 libcurl 是否支持通过分两步使用公钥和用户密码身份验证来进行身份验证。
此致,
【问题讨论】:
-
你解决了这个问题吗?如果是这样,你能告诉我怎么做吗。或发布您自己的答案。
-
不,我还没有解决这个问题。
标签: passwords sftp libcurl public-key