Почему я получаю сообщение об ошибке при использовании библиотеки curl sftp? - PullRequest
0 голосов
/ 25 мая 2020

Используя пример Curl sftp (https://curl.haxx.se/libcurl/c/ftpsget.html), я получаю сообщение об ошибке CURLE_UNSUPPORTED_PROTOCOL from curl_easy_perform().

Я изменил пример, добавив свое имя пользователя и сервер. Затем добавил curl_easy_setopt(curl, CURLOPT_PASSWORD,"xx");. Я работаю на Windows 10, используя Visual Studio 2017 с libcurl 7.7.

1 Ответ

0 голосов
/ 25 мая 2020

Цитата из фрагмента из примера:

 if(curl) {
    /*
     * You better replace the URL with one that works! Note that we use an
     * FTP:// URL with standard explicit FTPS. You can also do FTPS:// URLs if
     * you want to do the rarer kind of transfers: implicit.
     */ 
    curl_easy_setopt(curl, CURLOPT_URL,
                     "ftp://user@server/home/user/file.txt");

В нем четко указано, что поддерживаемые протоколы - это FTP и FTPS. В своем комментарии вы указываете, что сервер, к которому вы пытаетесь получить доступ,

Имя сервера, которое я использую, не http, а sftp: //xxx.xxx.com

Как видите, на сервере используется протокол SFTP, но curl поддерживает FTPS. Это два очень разных протокола.

Вы можете найти довольно много информативных статей, объясняющих различия.

Одно различие, например, в том, что FTP и FTPS используют два соединения для связи с сервером. Одно - "командное" соединение, другое - "данные". SFTP был разработан как расширение S SH и использует одно соединение с сервером.

Вы можете посмотреть здесь , чтобы найти потенциальное решение для Windows.

...